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静态类
Nov 25 PHP
PHP5中的this,self和parent关键字详解教程
Mar 19 PHP
php之Memcache学习笔记
Jun 17 PHP
PHP创建桌面快捷方式的实例代码
Feb 17 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
PHP获取服务器端信息的方法
Nov 28 PHP
php上传文件问题汇总
Jan 30 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
Mar 17 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
详解php协程知识点
Sep 21 PHP
php使用Swoole实现毫秒级定时任务的方法
Sep 04 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,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
php教程 插件机制在PHP中实现方案
2012/11/02 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
Yii实现简单分页的方法
2016/04/29 PHP
PHP读取大文件的几种方法介绍
2016/10/27 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
PHP学习记录之数组函数
2018/06/01 PHP
laravel 字段格式化 modle 字段类型转换方法
2019/09/30 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
Javascript 强制类型转换函数
2009/05/17 Javascript
JS格式化数字金额用逗号隔开保留两位小数
2013/10/18 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
python中xrange和range的区别
2014/05/13 Python
Python环境搭建之OpenCV的步骤方法
2017/10/20 Python
python实现决策树
2017/12/21 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
审计工作个人的自我评价
2013/12/25 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
总会计师岗位职责
2014/02/19 职场文书
2015年人事工作总结范文
2015/04/09 职场文书
甲午风云观后感
2015/06/02 职场文书
golang中的空slice案例
2021/04/27 Golang