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 相关文章推荐
joomla内置的表单验证功能使用方法
Jun 11 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
Aug 11 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
Oct 23 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
浅析php创建者模式
Nov 25 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
PHP实现扎金花游戏之大小比赛的方法
Mar 10 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
Oct 07 PHP
PHP swoole和redis异步任务实现方法分析
Aug 12 PHP
在Laravel中实现使用AJAX动态刷新部分页面
Oct 15 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 shell命令合并图片的代码
2011/06/23 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
php页面缓存方法小结
2015/01/10 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
php生成zip文件类实例
2015/04/07 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
PHP页面跳转操作实例分析(header方法)
2016/09/28 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
JS使用正则实现去掉字符串左右空格的方法
2016/12/27 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
layui 表格的属性的显示转换方法
2018/08/14 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
js实现聊天对话框
2020/02/08 Javascript
在Python中处理XML的教程
2015/04/29 Python
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
python实现用户登录系统
2016/05/21 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
介绍一下如何优化MySql
2016/12/20 面试题
4s客服专员岗位职责
2013/12/01 职场文书
网络研修随笔感言
2014/02/17 职场文书
销售员态度差检讨书
2014/10/26 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书