


Explication détaillée des variables membres statiques et des variables membres non statiques en PHP
Les membres de données peuvent être divisés en variables statiques et variables non statiques. Cet article présente principalement les variables membres statiques PHP et les variables membres non statiques. Les amis dans le besoin peuvent s'y référer
Les membres de données peuvent être divisés. en variables statiques , deux types de variables non statiques.
Membres statiques : Les membres d'une classe statique ajoutent le modificateur statique, qui est un membre statique. + nom du membre statique pour accéder à ce membre statique, car les membres statiques existent en mémoire et les membres non statiques doivent être instanciés avant que la mémoire ne soit allouée, de sorte que les membres statiques ne peuvent pas accéder aux membres non statiques. Parce que les membres statiques existent en mémoire, non-. les membres statiques peuvent accéder directement aux membres statiques de la classe.
Membres non statiques : Tous les membres sans Static sont des membres non statiques. Lorsqu'une classe est instanciée, elle est accessible via le. nom de classe instancié. Membres non statiques La durée de vie est déterminée par la durée de vie de la classe. Il n'y a pas de concept de durée de vie pour les membres statiques, car les membres statiques résident toujours dans le contenu.
Une classe peut également contenir des éléments statiques. membres et membres non statiques Membres, les classes incluent également des constructeurs statiques et des constructeurs non statiques
Cela peut être résumé en deux aspects. Le premier aspect est principalement relatif à l'aspect orienté processus, c'est-à-dire que les classes ne sont pas impliquées. dans cet aspect. Le deuxième aspect Par rapport à l'orienté objet, il explique principalement le rôle du statique dans les classes.
1. Le mot clé statique dans la conception orientée processus
1. >Définition : ajoutez le mot-clé static avant la variable globale et la variable est définie comme une variable globale statique.
Caractéristiques : A. Cette variable alloue de la mémoire dans la zone de données globales. B. Initialisation : si elle n'est pas explicitement initialisée, elle sera implicitement initialisée à 0 (les variables automatiques sont aléatoires sauf si elles sont explicitement initialisées). C. La variable d'accès n'est visible que dans le fichier source à proprement parler, elle doit commencer au point de définition et se terminer dans ce fichier.例(摘于C++程序设计教程---钱能主编P103): //file1.cpp //Example 1 #include void fn(); static int n; //定义静态全局变量 void main() { n=20; cout< fn(); } void fn() { n++; cout< }
En général, les données dynamiques générées par new dans le programme sont stockées dans la zone tas, et les données dynamiques à l'intérieur de la fonction sont stockées dans la zone de tas. Les variables automatiques sont stockées dans la zone de pile. Les variables automatiques libèrent généralement de l'espace à la sortie de la fonction, et les données statiques (même les variables locales statiques à l'intérieur de la fonction) sont stockées dans la zone de données globales. Les données de la zone de données globales ne libéreront pas d'espace à la fermeture de la fonction. Les lecteurs attentifs constateront peut-être que dans le code de l'exemple 1,
est remplacé par :
- Les variables portant le même nom peuvent être définies dans d'autres fichiers sans conflit
- Vous pouvez modifier l'exemple ci-dessus ; code comme suit :
//Example 2 //File1 #include void fn(); static int n; //定义静态全局变量(只能在本文件中使用) void main() { n=20; cout< extern int n;(可在别的文件中引用这个变量) void fn() { n++; cout<
static int n; //Définissez les variables globales statiques
en
2. Variables locales statiques
Définition : Lorsque le mot-clé static est ajouté avant la variable locale, la variable locale statique est définie.
Donnons d'abord un exemple de variable locale statique, comme suit ://Example 3 #include void fn(); void main() { fn(); fn(); fn(); } void fn() { static n=10; cout<
Caractéristiques :
A. Cette variable alloue de la mémoire dans la zone de données globale.
B. Initialisation : s'il n'est pas explicitement initialisé, il sera implicitement initialisé à 0 et les appels de fonction suivants ne seront plus initialisés.C、它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或 语句块结束时,其作用域随之结束。
3、静态函数(注意与类的静态成员函数区别)
定义:在函数的返回类型前加上static关键字,函数即被定义成静态函数。
特点:
A、静态函数与普通函数不同,它只能在声明它的文件当中可见,不能被其它文件使用。
静态函数的例子:
//Example 4 #include static void fn();//声明静态函数 void main() { fn(); } void fn()//定义静态函数 { int n=10; cout<
定义静态函数的好处:
静态函数不能被其它文件所用;
其它文件中可以定义相同名字的函数,不会发生冲突;
二、面向对象的static关键字(类中的static关键字)
1、静态数据成员
在类内数据成员的声明前加上关键字static,该数据成员就是类内的静态数据成员。先举一个静态数据成员的例子。
//Example 5 #include class Myclass { public: Myclass(int a,int b,int c); void GetSum(); private: int a,b,c; static int Sum;//声明静态数据成员 }; int Myclass::Sum=0;//定义并初始化静态数据成员
Myclass::Myclass(int a,int b,int c) { this->a=a; this->b=b; this->c=c; Sum+=a+b+c; } void Myclass::GetSum() { cout<<"Sum="<
可以看出,静态数据成员有以下特点:
对于非静态数据成员,每个类对象都有自己的拷贝。而静态数据成员被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程序中也只有一份拷贝,由该类型的所有对象共享访问。也就是说,静态数据成员是该类的所有对象所共有的。对该类的多个对象来说,静态数据成员只分配一次内存,供所有对象共用。所以,静态数据成员的值对每个对象都是一样的,它的值可以更新;
静态数据成员存储在全局数据区。静态数据成员定义时要分配空间,所以不能在类声明中定义。在Example 5中,语句int Myclass::Sum=0;是定义静态数据成员;
静态数据成员和普通数据成员一样遵从public,protected,private访问规则;
因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以,它不属于特定的类对象,在没有产生类对象时其作用域就可见,即在没有产生类的实例时,我们就可以操作它;
静态数据成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式为:
<数据类型><类名>::<静态数据成员名>=<值>
类的静态数据成员有两种访问形式:
<类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名>
如果静态数据成员的访问权限允许的话(即public的成员),可在程序中,按上述格式来引用静态数据成员 ;
静态数据成员主要用在各个对象都有相同的某项属性的时候。比如对于一个存款类,每个实例的利息都是相同的。所以,应该把利息设为存款类的静态数据成员。这有两个好处,第一,不管定义多少个存款类对象,利息数据成员都共享分配在全局数据区的内存,所以节省存储空间。第二,一旦利息需要改变时,只要改变一次,则所有存款类对象的利息全改变过来了;
同全局变量相比,使用静态数据成员有两个优势:
静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其它全局名字冲突的可能性;
可以实现信息隐藏。静态数据成员可以是private成员,而全局变量不能;
2、静态成员函数
与静态数据成员一样,我们也可以创建一个静态成员函数,它为类的全部服务而不是为某一个类的具体对象服务。静态成员函数与静态数据成员一样,都是类的内部实现,属于类定义的一部分。普通的成员函数一般都隐含了一个this指针,this指针指向类的对象本身,因为普通成员函数总是具体的属于某个类的具体对象的。通常情况下,this是缺省的。如函数fn()实际上是this->fn()。但是与普通函数相比,静态成员函数由于不是与任何的对象相联系,因此它不具有this指针。从这个意义上讲,它无法访问属于类对象的非静态数据成员,也无法访问非静态成员函数,它只能调用其余的静态成员函数。下面举个静态成员函数的例子。
//Example 6 #include class Myclass { public: Myclass(int a,int b,int c); static void GetSum();/声明静态成员函数 private: int a,b,c; static int Sum;//声明静态数据成员 }; int Myclass::Sum=0;//定义并初始化静态数据成员 Myclass::Myclass(int a,int b,int c) { this->a=a; this->b=b; this->c=c; Sum+=a+b+c; //非静态成员函数可以访问静态数据成员 } void Myclass::GetSum() //静态成员函数的实现 { // cout<
Les membres statiques d'une classe sont différents des membres généraux de la classe : les membres statiques n'ont rien à voir avec l'instance de l'objet, seulement la classe elle-même. Ils sont utilisés pour implémenter les fonctions et les données que la classe souhaite encapsuler, mais n'incluent pas les fonctions et les données d'objets spécifiques. Les membres statiques incluent des méthodes statiques et des propriétés statiques.
Les propriétés statiques contiennent des données à encapsuler dans une classe et peuvent être partagées par toutes les instances de la classe. En effet, en plus d’appartenir à une classe fixe et de restreindre les méthodes d’accès, les propriétés statiques d’une classe sont très similaires aux variables globales d’une fonction.
Les méthodes statiques implémentent des fonctions qui doivent être encapsulées par la classe et n'ont rien à voir avec des objets spécifiques. Les méthodes statiques sont très similaires aux fonctions globales et peuvent accéder entièrement aux attributs de la classe ou sont accessibles. Par instance de l'objet, quel que soit l'accès Quel est le qualificatif de .
Une classe qui ne contient aucun membre non statique peut être appelée une classe statique. Une classe statique peut également être comprise comme un espace de noms pour les variables et fonctions globales !
Les méthodes ordinaires sont appelées avec ->. PHP créera une variable this. Les méthodes statiques n'appartiennent à aucun objet. Dans certains cas, nous voulons même l'appeler lorsqu'il n'y a pas d'objet valide, alors Statique. les méthodes doivent être utilisées. PHP ne créera pas cette variable dans les méthodes statiques, même si vous les appelez depuis un objet.
Vous pouvez écrire une méthode pour montrer si elle est appelée de manière statique ou non statique en vérifiant si elle est créée. Bien sûr, si vous utilisez le mot-clé static, cette méthode sera toujours statique, peu importe comment elle est. appelé de.
Votre classe peut également définir des attributs constants. Vous n'avez pas besoin d'utiliser public static, utilisez simplement le mot-clé const. Les attributs constants sont toujours des attributs de la classe, pas l'instanciation de la classe. propriétés de l'objet.
Problèmes d'efficacité entre les méthodes statiques PHP et les méthodes non statiques
1. L'efficacité de l'accès aux membres statiques n'est pas nécessairement supérieure à celle des membres non statiques
2 , il vous suffit d'appeler la valeur de retour d'une méthode de classe, et il est plus raisonnable d'utiliser des méthodes statiques, sinon il y aura une surcharge supplémentaire due à new. Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’étude de chacun.Bogues rencontrés lors de l'utilisation de jsvariablesscope
Explication détaillée des variables et étapes de levage des fonctions dans JS
Apprentissage PHP : variables prédéfiniesDétails
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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)

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.
