PHP中静态变量与静态变量的差异分析
静态是静态对象或静态变量、实例变量或静态定义的方法的定义。
1。$ =新类(创建一个对象),然后使用- >调用:对象属性,前提是变量/可访问的方法。
2。直接调用类方法变量:类/属性,既静态又非静态,但有前提条件。
如果它是一个变量,它需要访问变量。
如果它是一种方法,除了可以访问的方法之外,还需要满足它。
(1)如果是静态方法,则没有特殊条件。
其次,如果它是非静态方法,则需要在不使用$的情况下更改该方法,也就是说,不调用静态变量或方法。当然,调用静态变量/方法是没有问题的。
然后让我们看一下对象的用法……然后使用类:……有什么区别:
1。使用对象>……你需要执行构造函数来创建一个对象。
2。使用类::……调用静态方法变量,不需要执行构造函数来创建对象。
三.使用类::……调用一个非静态方法变量,也不需要执行构造函数来创建一个对象。
然后这个奇怪的地方出来了,既然2和3是一样的,静态方法变量的存在有什么意义呢
一个静态变量:声明类成员或方法是静态的,它可以无需实例化的类直接访问,而无法访问静态成员(除了静态方法)通过对象。静态成员属于类,不属于任何对象实例,但可以共享类的对象实例。
例如,代码如下所示:
复制代码代码如下:< PHP
类人{
定义静态成员属性
公共静态$国=中国;
静态成员方法的定义
我国公共静态函数(){
内部访问静态成员属性
回声:我是。人;
}
}
班级学生延伸人{
函数研究(){
回声我。家长:$国家。人;
}
}
输出成员属性值
答:$国家;
新的人();
回声国家;错误的方式
访问静态成员方法
Person:: (myCountry); / / output: I am Chinese
静态方法也可以通过对象访问:
$ P1 ->国家();
输出属性值类成员
回声学生::$国家;
新学生();
($ t1)研究;输出:我是中国人
>
运行这个示例,输出:
中国
我是中国人
我是中国人
中国
我是中国人
摘要:访问静态成员属性或方法在类中,使用自::(注意不是自美元),代码如下:
复制代码如下:自::$国
自::我国()
使用父级:(注意不是父类)访问父类静态成员属性或方法,代码如下所示:
复制代码如下:父:$ $
家长::我国()
外部访问静态成员属性和方法是类名name子类名称:
复制代码如下:人::$国家
人::我的国家()
学生:$国家
但是静态方法也可以由普通对象访问。
作为一个例子,静态变量被声明,代码如下所示:
复制代码代码如下:< PHP
函数(){
静态$ int = 0; /更正
静态$ = 1 + 2; /错误(因为它是一个表达式)
静态变量int = sqrt(121); / /错误的(因为它是一个表达过)
元+ +;
返回值;
}
>
例如,使用静态变量的示例,代码如下所示:
复制代码代码如下:< PHP
功能测试()
{
静态w3sky = 0美元;
echo $ w3sky;
w3sky美元+ +;
}
>
现在,每次调用测试()函数将输出的w3sky美元价值和添加一个。
静态变量也提供了一种处理函数的递归的方法,递归函数是一个函数调用本身,一定要写一个递归函数,因为无限递归的可能性仍在继续,我们必须确保有足够的停止递归的方法,简单的递归函数数到10,使用静态变量确定当$计数停止。
例如静态变量和递归函数,代码如下所示:
复制代码代码如下:< PHP
功能测试()
{
静态$ = 0;
数+;
回波计数;
如果(计数为10){
测试();
}
数美元--;
}
>
注意:静态变量可以在上面的例子中声明,如果它们被赋值为声明中表达式的结果,它会导致解析错误。
希望本文能对大家的PHP程序设计有所帮助。