当前位置:Gxlcms > PHP教程 > phpStatic关键字实用方法_PHP教程

phpStatic关键字实用方法_PHP教程

时间:2021-07-01 10:21:17 帮助过:21人阅读

为了兼容PHP4,如果没有指定“可见性”,属性和方法默认为public。
由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。
静态属性也可以由对象通过->操作符来访问。
用::方式调用一个非静态方法会导致一个E_STRICT级别的错误。
就像其它所有的PHP静态变量一样,静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。 所以你可以把静态属性初始化为整型或数组,但不能指向另一个变量或函数返回值,也不能指向一个对象。
PHP5.3.0之后,我们可以用一个变量来动态调用类。但该变量的值不能为关键字self, parent 或static。
代码如下:
  1. <br><!--?php <BR-->class Foo <br>{ <br>public static $my_static = 'foo'; <br>public function staticValue() { <br>return self::$my_static; <br>} <br>} <br>class Bar extends Foo <br>{ <br>public function fooStatic() { <br>return parent::$my_static; <br>} <br>} <br>print Foo::$my_static . "\n"; <br>$foo = new Foo(); <br>print $foo->staticValue() . "\n"; <br>print $foo->my_static . "\n"; // Undefined "Property" my_static <br>print $foo::$my_static . "\n"; <br>$classname = 'Foo'; <br>print $classname::$my_static . "\n"; // PHP 5.3.0之后可以动态调用 <br>print Bar::$my_static . "\n"; <br>$bar = new Bar(); <br>print $bar->fooStatic() . "\n"; <br>?> <br> <br><strong>PHP里边用Static关键字来定义静态属性和方法.</strong> <br><br><strong>实例一:静态属性的引用方法</strong> <br><span style="CURSOR: pointer" onclick="doCopy('code84928')"><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br><!--?php <BR-->/* <br>*author:ajax123 <br>*qq:283400245 <br>*/ <br>class person{ <br>static$name="ajax123";//static声明静态属性 <br>static$age=25;//static声明静态属性 <br>static$address="北京";//static声明静态属性 <br>function song(){ <br>echo "My name is : ".self::$name."<br>";//类内部:通过通过self 类访问静态属性 <br>echo "I am ".self::$age."<br>";//类内部:通过通过self 类访问静态属性 <br>echo "I live in ".self::$address."<br>";//类内部:通过self 类访问静态属性 <br>} <br>} <br>echoperson::$name."<br>";//类外部:通过类名person访问静态属性 <br>echoperson::$age."<br>";//类外部:通过类名person访问静态属性 <br>echoperson::$address."<br>";//类外部:通过类名person访问静态属性 <br>?> <br> <br><br><strong>实例二:静态方法的引用方法 <br></strong><br><span style="CURSOR: pointer" onclick="doCopy('code62901')"><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br><!--?php <BR-->/* <br>*author:ajax123 <br>*qq:283400245 <br>*/ <br>class person{ <br>static$name="ajax123";//static声明静态属性 <br>static$age=25;//static声明静态属性 <br>static$address="北京";//static声明静态属性 <br>staticfunction song(){ //声明静态方法song <br>echo "My name is : ".self::$name."<br>";//类内部:通过通过self 类访问静态属性 <br>echo "I am ".self::$age."<br>";//类内部:通过通过self 类访问静态属性 <br>echo "I live in ".self::$address."<br>";//类内部:通过self 类访问静态属性 <br>} <br>} <br>person::song()."<br>";//类外部:通过类名person访问静态方法 <br>?> <br></li><li><p></p></li><li><p align="left"><span id="url" itemprop="url">http://www.bkjia.com/PHPjc/322005.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">true</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/322005.html</span><span id="genre" itemprop="genre">TechArticle</span><span id="description" itemprop="description">为了兼容PHP4,如果没有指定“可见性”,属性和方法默认为public。 由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不...</span></p></li><li> </li></ol></pre></li></ol></pre>

人气教程排行