61581229 发表于 2015-8-27 09:17:01

php中类能够调用实例方法不报错的原因

  学习php目前是第二天,就是喜欢深入研究这些小细节的秘密。
  分别用php 5.2.5和 php 5.4.3测试



<?php
class Person{
function show(){
         var_dump($this);
echo "hello,world";
}
function __call($name, $args){
echo "call yes";
}
function __callStatic($name, $args){
echo "callStatic yes";
}
}
Person::show();
?>

  
  1.这里类调用了实例方法,而且还正确的调用到了实例方法,因为没有进入__calll和__callstatic
  2.无错误
  按照php的一些书籍资料的说明,应该是类能调用的方法只有类方法,而不是类的实例方法,也就是类只能调用静态方法(static method),但是这里类居然调用了实例方法,百思不得其解。找了一些相关资料,如下:
  引用:
  -----------------------------------------------------------------
  在php文件的任何位置都可以使用 classname::methodname()来直接调用类里面公用的方法。个人觉得出现这个情况是因为
内存的堆区保存的对象仅保存的是对象的属性,对象的方法任然存放在代码区,为类的成员方法,如果使用对象来调用的类的成员方法里面不含$this的话,此时这个方法和静态数据区存放的静态方法并无明显区别。即此时对象的成员方法与该对象的静态方法并无明显区别
都并不随着调用对象的不同,而发生不同的变化。
并且成员方法本身就是在类中定义的,就是老爸和儿子的关系,区别就是一个是自己老婆生的(静态方法),另外一个是和别人老婆生的(成员方法),别人老婆生的那个儿子就管其他人叫老爸了。某一天那个私生的儿子了解情况了(无$this)。便会叫两人叫爸了。
此时便可以使用classname::methodname()
  url:http://segmentfault.com/q/1010000000158671
  -----------------------------------------------------------------
  然后用5.4.3测试果断告警,如下:
http://www.cnblogs.com/IAmBetter/archive/2013/04/04/data:image/png;base64,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
  还一个牵扯进来的问题是:



<?php
class Person{
function show(){
var_dump($this);
echo "hello,world";
}
function __call($name, $args){
echo "call yes";
}
function __callStatic($name, $args){
echo "callStatic yes";
}
}
class Child extends Person {
function tell(){
self::show();
}
}
Person::show();
$c = new Child();
$c->tell();
?>

  输出:
  Null
  object(Child)#1 (0) { }
  hello,world
  说明:
  1.第一次确实没有对象(符合引用的说明)
  2.这次却是一个child的对象
  
  解释:
  其实php中有调用的作用域,这种是看似调用了静态方法的,比如说:上图的$c调用的时候,就是在这个对象的作用域,这个作用域在传递,所以上面的$this是child类的对象,这样做有个例子,如下:



Class A{
function __construct(){}
}
class B extends A{
function __construct(){
parent::__construct();
}
}

  建议不要用:类调用非静态方法。
  
  再看下面的一个例子:



<?php
class Person{
function __call($name, $args){
echo "call yes";
}
static function __callStatic($name, $args){
echo "callStatic yes";
}
}
class Child extends Person {
function tell(){
self::show();
}
}
Person::show();
$c = new Child();
$c->tell();
?>

  
  输出:
  callStatic yes
call yes
  说明:
  和我们的理解一样,当第一个person尝试的是调用一个 静态方法,没有调用到,即执行__callStatic();当$c这个作用域的对象把调用作用域传递到父类下之后,调用的是对象方法,所以执行的是__call();
  一个大神也做了解释,可以看看,url:http://www.laruence.com/2012/06/14/2628.html
  
  
  
页: [1]
查看完整版本: php中类能够调用实例方法不报错的原因