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


Posted in PHP onDecember 13, 2006

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水印技术
Feb 14 PHP
PHP中文汉字验证码
Apr 08 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 PHP
PHP滚动日志的代码实现
Jun 10 PHP
php检测图片主要颜色的方法
Jul 01 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
CI(CodeIgniter)模型用法实例分析
Jan 20 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
Mar 29 PHP
php删除二维数组中的重复值方法
Mar 12 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
Apr 10 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
php基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 #PHP
php基础知识:类与对象(3) 构造函数和析构函数
Dec 13 #PHP
php基础知识:类与对象(2) 自动加载对象
Dec 13 #PHP
php基础知识:类与对象(1)
Dec 13 #PHP
php基础知识:函数基础知识
Dec 13 #PHP
php基础知识:控制结构
Dec 13 #PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 #PHP
You might like
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
VUE中v-model和v-for指令详解
2017/06/23 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
python对html过滤处理的方法
2018/10/21 Python
numpy基础教程之np.linalg
2019/02/12 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
python实现人机五子棋
2020/03/25 Python
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
房地产管理毕业生自荐信
2013/11/04 职场文书
电子商务专业学生的自我鉴定
2013/11/28 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
买卖车协议书
2014/04/21 职场文书
公证委托书
2014/08/01 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
党员剖析材料范文
2014/09/30 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
R9700摩机记
2022/04/05 无线电