php基础知识:类与对象(5) static

 更新时间:2006年12月13日 00:00:00   作者:  

Declaring class members or methods as static makes them accessible without needing an instantiation of the class. A member declared as static can not be accessed with an instantiated class object (though a static method can). 
声明静态的类变量和方法可以不需要实例化类对象的情况下对他们进行调用。静态类不能被类对象调用。(类的静态方法可以)。//注意看第一个例子,在一个非静态的方法中调用了静态的变量。唯一的不同是用了self。难道用了self就可以????不知道???需要一个试验。

The static declaration must be after the visibility declaration. For compatibility with PHP4, if no visibility declaration is used, then the member or method will be treated as if it was declared as public. 
静态声明必须必须是显式的声明。为了兼容PHP4,如果没有显式声明的对象或者方法,被当作声明为public。

Because static methods are callable without an instance of the object created, the pseudo variable $this is not available inside the method declared as static. 
因为静态方法不需要实例化类对象来调用,所以伪变量$this在静态方法中也是不可用的。 

In fact static method calls are resolved at compile time. When using an explicit class name the method is already identified completely and no inheritance rules apply. If the call is done by self then self is translated to the current class, that is the class the code belongs to. Here also no inheritance rules apply. 
实际上,静态的方法调用在编译时已经确定了。(这段我不会翻译。???不明白???)
求了很久求来的翻译如下:
------------------------------------------------
实际上,静态方法的调用在编译时解决。当使用一个明确的类名时,方法已经被完全识别而不需要应用继承规则。如果由自身调用,那么自身被解析成当前的类,也就是代码所属的类。这里也没有应用继承规则。
但是一个新的问题:
这里不一定有继承产生,为什么会提到继承规则?(???不明白????)

Static properties cannot be accessed through the object using the arrow operator ->. Calling non-static methods statically generates an E_STRICT level warning. 
静态成员不能被类的对象通过箭头符号->来调用。静态的调用一个非静态方法会导致一个E_STRICT级别的警告。

静态成员例:

复制代码 代码如下:
class Foo 

   public static $my_static = 'foo';  
   public function staticValue() { 
       return self::$my_static;//注意这里!!!! 
       //return $my_static;//这样写会不会出错。需要试验 
   } 


class Bar extends Foo 

   public function fooStatic() { 
       return parent::$my_static;//注意这里!!!! 
   } 

print Foo::$my_static . " n"; 
$foo = new Foo(); 
print $foo->staticValue() . " n"; 
print $foo->my_static . " n";      // 未定义的"Property" my_static  
// $foo::my_static is not possible 
print Bar::$my_static . " n"; 
$bar = new Bar(); 
print $bar->fooStatic() . " n"; 

静态方法例: 
class Foo { 
   public static function aStaticMethod() { 
       // ... 
   } 

Foo::aStaticMethod(); 

相关文章

  • PHP获取对象属性的三种方法实例分析

    PHP获取对象属性的三种方法实例分析

    这篇文章主要介绍了PHP获取对象属性的三种方法,结合实例形式分析了php面向对象程序设计中获取对象属性的常见操作技巧,需要的朋友可以参考下
    2019-01-01
  • php 常用类整理

    php 常用类整理

    在实际开发过程会经常会遇到一些重复的操作,如果每次都要自己去实现这无疑加重了自己的工作量,下面对一些可能经常用到的类做个整理.
    2009-12-12
  • PHP实现PDO的mysql数据库操作类

    PHP实现PDO的mysql数据库操作类

    这篇文章主要介绍了PHP实现PDO的mysql数据库操作类,其中dbconfig类负责配置数据库访问信息,dbtemplate类集合了对数据库的访问操作,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • php中静态类与静态变量用法的区别分析

    php中静态类与静态变量用法的区别分析

    这篇文章主要介绍了php中静态类与静态变量用法的区别,以实例形式较为详细的分析了php中静态类与静态变量的定义、功能及使用技巧,需要的朋友可以参考下
    2015-01-01
  • PHP设计模式之观察者模式定义与用法分析

    PHP设计模式之观察者模式定义与用法分析

    这篇文章主要介绍了PHP设计模式之观察者模式定义与用法,结合实例形式分析了php观察者模式的概念、原理、用法及相关操作注意事项,需要的朋友可以参考下
    2019-04-04
  • php自动获取字符串编码函数mb_detect_encoding

    php自动获取字符串编码函数mb_detect_encoding

    使用 mb_detect_encoding() 函数来判断字符串是什么编码的。
    2011-05-05
  • PHP使用pcntl_fork实现多进程下载图片的方法

    PHP使用pcntl_fork实现多进程下载图片的方法

    这篇文章主要介绍了PHP使用pcntl_fork实现多进程下载图片的方法,较为详细的分析了pcntl_fork的原理与用法,以及使用pcntl_fork实现多进程下载图片的方法,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • 优化php效率,提高php性能的一些方法

    优化php效率,提高php性能的一些方法

    优化php效率,提高php性能的一些方法,开发php的朋友可以注意下。
    2011-03-03
  • Zend Framework中的简单工厂模式 图文

    Zend Framework中的简单工厂模式 图文

    某天又然后想到好久没复习设计模式了。综合一下,复习一个设计模式之后在ZF中找一下使用这模式的源码吧,不读所有源码,读读比较”高级”的部分吧,要说模式,暂时不知道是不是所有模式ZF里面都有,但是应该有足够的模式够我最近看了,在说可以找找其他开源的软件来找模式
    2012-07-07
  • php 进阶:实现无限分类

    php 进阶:实现无限分类

    php 进阶:实现无限分类...
    2006-12-12

最新评论