专注于WEB技术的IT博客

php面向对象之Static关键字

时间:2012-11-08分类: php浏览:3029
分享到:

        关于Static关键字在类中的使用,PHP手册给出了如下的约定:
   1、声明类成员或方法为static,就可以不实例化类而直接访问。不能通过一个对象来访问其中的静态成员(静态方法除外)。

   2、由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。
   3、静态属性不可以由对象通过->操作符来访问。
   4、用::方式调用一个非静态方法会导致一个E_STRICT级别的错误。


   现在来关注一下第4条约定。
   
运行环境: (Win32) PHP/5.3.3

   代码:

class Foo{  
     
    public static $my_static = 'foo';//声明一个静态成员  
     
     
    public function staticValue() {//静态方法  
        return self::$my_static;//  
    }  
    public function run(){//非静态方法  
      return "abc <br\>";  
    }  
    public  function callrun() {  
        return self::run();//用self::方式调用一个非静态方法  
             
    }  
      
}  
     
echo Foo::$my_static . "<br \>";  
     
echo Foo::run();//用className::方法名调用非静态方法  
echo Foo::callrun();

   
   输出结果:
   foo
       abc abc

   
   上面实实验中,两处使用::方式调用一个非静态方法,运行结果正常显示,没有出现什么错误警告.
   查了些资料,解释说:
   E_STRICT - 编码标准化警告,允许PHP建议如何修改代码以确保最佳的互操作性向前兼容性。
   当一个类中有非静态方法被self:: 调用时,系统会自动将这个方法转换为静态方法。

   


猜你喜欢
星际争霸之php面向对象(二)
星际争霸之php面向对象(一)
php面向对象之__autoload()
php面向对象之__call处理错误调用
php面向对象之__toString()
PHP面向对象之const常量修饰符
php面向对象之final的应用
php面向对象之克隆对象
PHP面向对象之对象和引用
php面向对象之类的静态成员
标签 : php 面向对象
除非注明,本文首发网志博客,欢迎转载!转载请注明本文地址:http://w3note.com/web/41.html,谢谢。
  • 评论
  • 赞助本站