new static() 和 new self() 的区别异同,staticself
new static() 和 new self() 的区别异同,staticself
长夜漫漫啊!
今天领导本地搭建一个站。发现用PHP 5.2 搭建不起来,站PHP代码里面有很多5.3以上的部分,领导让苦逼我更改在5.2下能运行。
改着改着发现了一个地方
<span>return</span> <span>new</span> <span>static</span>(<span>$val</span>);
这尼玛是神马,只见过
<span>return</span> <span>new</span> self(<span>$val</span>);
于是上网查了下,他们两个的区别。
self - 就是这个类,是代码段里面的这个类。
static - PHP 5.3加进来的只得是当前这个类,有点像$this的意思,从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类。
还是看看老外的专业解释吧。
self
refers to the same class whose method the new
operation takes place in.
static
in PHP 5.3's late static bindings refers to whatever class in the hierarchy which you call the method on.
In the following example, B
inherits both methods from A
. self
is bound to A
because it's defined in A
's implementation of the first method, whereas static
is bound to the called class (also see <span><span>get_called_class()</span></span>
).
<span>class</span><span> A { </span><span>public</span> <span>static</span> <span>function</span><span> get_self() { </span><span>return</span> <span>new</span><span> self(); } </span><span>public</span> <span>static</span> <span>function</span><span> get_static() { </span><span>return</span> <span>new</span> <span>static</span><span>(); } } </span><span>class</span> B <span>extends</span><span> A {} </span><span>echo</span> <span>get_class</span>(B::get_self()); <span>//</span><span> A</span> <span>echo</span> <span>get_class</span>(B::get_static()); <span>//</span><span> B</span> <span>echo</span> <span>get_class</span>(A::get_static()); <span>//</span><span> A</span>
这个例子基本上一看就懂了吧。
原理了解了,但是问题还没有解决,如何解决掉 return new static($val); 这个问题呢?
其实也简单就是用 get_class($this); 如下
<span>class</span><span> A { </span><span>public</span> <span>function</span><span> create1() { </span><span>$class</span> = <span>get_class</span>(<span>$this</span><span>);<br /></span><span> return</span> <span>new</span> <span>$class</span><span>(); } </span><span>public</span> <span>function</span><span> create2() { </span><span>return</span> <span>new</span> <span>static</span><span>(); } } </span><span>class</span> B <span>extends</span><span> A { } </span><span>$b</span> = <span>new</span><span> B(); </span><span>var_dump</span>(<span>get_class</span>(<span>$b</span>->create1()), <span>get_class</span>(<span>$b</span>-><span>create2())); </span><span>/*</span><span> The result string(1) "B" string(1) "B" </span><span>*/</span>
东西多了点。呵呵。帮你详细说一下。
1. new和new[]的区别
new 用于单个对象或实例的创建,就是调用类的构造函数。
new [] 用于创建对象或实例的数组实例,并且地址是连续的。(内存分配的时候有可能不连续,但地址链表是连续的。)
2. 虚函数(这个没办法说,只能举例子)
class person
{
public :
virtual say();
}
class techer : public person
{
public :
protected override say();
}
class student : public person
{
public :
protected override say();
}
第三个没理解什么意思。
前面两个不知道你看懂没有。没有的话联系我。
在java中
public static void main(String args[])这句话是一个主方法,
java程序可以有多个方法,但是主方法只能有一个,
用ststic修饰的方法称为类方法(main也是类方法)。
A a=new A()是创建一个实例对象 static 起的是修饰作用

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Le boom des investissements Bitcoin continue de se réchauffer. Bien que la Chine soit autrefois le plus grand marché du Bitcoin, les impacts politiques ont conduit à des restrictions de transaction. Aujourd'hui, la Corée du Sud est devenue l'un des principaux marchés du Bitcoin au monde, obligeant les investisseurs à remettre en question les différences entre elle et son bitcoin national. Cet article effectuera une analyse approfondie des différences entre les marchés du Bitcoin des deux pays. L'analyse des différences entre les marchés de la Corée du Sud et la Chine. Par exemple, fin octobre 2024, le prix du bitcoin en Corée du Sud était autrefois

Nexo: Non seulement c'est un échange de crypto-monnaie, mais aussi votre directeur financier numérique. Il permet aux utilisateurs d'obtenir des prêts en crypto-monnaie en tant que garantie et fournit des services pour gagner des intérêts. Alors que Nexo propose également des capacités d'achat, de vente et de rédemption de crypto-monnaie, son principal activité est la cryptographie. Cet article explorera le modèle d'exploitation et la sécurité de Nexo en profondeur pour fournir aux investisseurs une compréhension plus complète. Le modèle d'exploitation de Nexo a été fondé en 2018 et a son siège à Zug, en Suisse, et est un pionnier dans le domaine de la finance numérique. Il est différent des autres échanges centralisés et se concentre davantage sur la fourniture de services financiers complets. Les utilisateurs peuvent acheter, vendre, échanger des crypto-monnaies sans vendre des actifs et

La différence entre Ethereum et Bitcoin est significative. Techniquement, Bitcoin utilise POW et Ether est passé de Pow à Pos. La vitesse de trading est lente pour le bitcoin et Ethereum est rapide. Dans les scénarios d'application, Bitcoin se concentre sur le stockage des paiements, tandis que Ether prend en charge les contrats intelligents et les DAPP. En termes d'émission, le montant total du bitcoin est de 21 millions et il n'y a pas de montant total fixe de pièces d'éther. Chaque défi de sécurité est disponible. En termes de valeur marchande, le bitcoin se classe en premier et les fluctuations des prix des deux sont importantes, mais en raison de caractéristiques différentes, la tendance des prix d'Ethereum est unique.

Bitcoin: Digital Or ou Stock Trading Dérivés? Une analyse approfondie de la nature de son investissement. Cet article discutera en profondeur des aspects de la définition, de la nature, du mécanisme d'émission, etc., et dévoilera le mystère de l'investissement du bitcoin. Bitcoin and Stocks: La différence essentielle entre Bitcoin et les actions est: investir dans Bitcoin n'est pas la même chose que d'investir dans des actions. Bitcoin est une monnaie numérique décentralisée qui appartient à la catégorie des actifs numériques ou des actifs virtuels. Ce concept a été proposé par Satoshi Nakamoto en 2009. Contrairement aux devises traditionnelles,

La différence entre le multithreading et l'asynchrone est que le multithreading exécute plusieurs threads en même temps, tandis que les opérations effectuent de manière asynchrone sans bloquer le thread actuel. Le multithreading est utilisé pour les tâches à forte intensité de calcul, tandis que de manière asynchrone est utilisée pour l'interaction utilisateur. L'avantage du multi-threading est d'améliorer les performances informatiques, tandis que l'avantage des asynchrones est de ne pas bloquer les threads d'interface utilisateur. Le choix du multithreading ou asynchrone dépend de la nature de la tâche: les tâches à forte intensité de calcul utilisent le multithreading, les tâches qui interagissent avec les ressources externes et doivent maintenir la réactivité de l'interface utilisateur à utiliser asynchrone.

La différence de base entre le pain de haricot et Deepseek est la précision et la complexité de la récupération. 1. Doubao est basé sur la correspondance des mots clés, simple et directe, avec un faible coût, mais une faible précision, et ne convient que pour des données structurées; 2. Deepseek est basé sur l'apprentissage en profondeur, peut comprendre la sémantique, a une précision élevée, mais un coût élevé et convient aux données non structurées. Le choix final dépend du scénario d'application et des limitations de ressources.

Peur, incertitude et doute de l'investissement en crypto: comment prendre des décisions éclairées? De nombreux investisseurs de crypto sont confrontés à des craintes de «c'est le dernier cycle», ainsi que des préoccupations concernant la durée du marché haussier, associée à la pression des autres, ce qui conduit ensemble à de mauvaises décisions d'investissement. Cet article explorera comment surmonter ces défis et faire des choix d'investissement plus intelligents. Risque potentiel: distraction: chasser aveuglément les points chauds et ignorer la valeur des actifs centraux. Pessimisme et hésitation: L'incertitude conduit à un manque de confiance, à l'incapacité de tenir longtemps et même à la sortie du marché. Manque de croyance: manque de recherches approfondies sur les projets et ne peut pas faire face à la volatilité du marché. Manque de stratégies de bénéfice: nettoyer les positions tôt en raison de la peur des retraits, manquant des rendements potentiels. Stratégies d'adaptation: 1. Focus sur les zones centrales:

Contrat monétaire: une épée à double tranchant avec un risque élevé et des rendements élevés. De nombreux anciens combattants du cercle des devises ont été attirés par l'énorme potentiel de trading de contrats, ce qui peut non seulement apporter des rendements généreux mais également entraîner des pertes énormes. Le trading contractuel est essentiellement un dérivé de la monnaie numérique, et son risque élevé et ses rendements élevés ont attiré beaucoup d'attention. Alors, comment augmenter la probabilité de bénéfice dans le trading de contrats du cercle de devises? Cela nécessite des compétences clés. Cet article explorera en profondeur la façon de réduire les risques et d'améliorer la rentabilité. Stratégie de profit du contrat dans le cercle des devises: sur le marché des crypto-monnaies volatiles, si vous souhaitez réaliser des bénéfices stables dans le trading de contrats, vous devez formuler une stratégie complète et la mettre en œuvre strictement: la gestion des risques d'abord: la définition d'un point de perte d'arrêt est la clé. Réglez le prix de perte d'arrêt à l'avance pour contrôler les pertes potentielles et éviter les transactions uniques
