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 相关文章推荐
PHPShop存在多个安全漏洞
Oct 09 PHP
PHP自定义函数收代码
Aug 01 PHP
解析php file_exists无效的解决办法
Jun 26 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
Sep 26 PHP
php中apc缓存使用示例
Dec 25 PHP
php使用fopen创建utf8编码文件的方法
Oct 31 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 PHP
Laravel 5框架学习之环境与配置
Apr 08 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
Apr 21 PHP
PHP微信支付开发实例
Jun 22 PHP
简单的pgsql pdo php操作类实现代码
Aug 25 PHP
PHP大文件及断点续传下载实现代码
Aug 18 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投票程序源码
2007/03/11 PHP
php中的观察者模式
2010/03/24 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
2015/08/06 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
Bootstrap select多选下拉框实现代码
2016/12/23 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
一篇不错的Python入门教程
2007/02/08 Python
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
连接Python程序与MySQL的教程
2015/04/29 Python
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
Python中的字典与成员运算符初步探究
2015/10/13 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
英语课前三分钟演讲稿
2014/08/19 职场文书
设备收款委托书范本
2014/10/02 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
力克胡哲观后感
2015/06/10 职场文书
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python