php中的类方法调用的原理有那些

原问题:php中的类方法调用的原理有那些
分类:编程开发 > 最后更新时间:【2016-12-12 10:32:31】
问题补充:

方法类中的方法调用有那些,案例。举例说明,最好上图说话。

最佳答案

在类里面的时候,$this->func()和self::func()没什么区别。在外部的时候,->必须是实例化后的对象使用; 而::可以是未实例化的类名直接调用。下面整理了几种php调用类中的方法,希望有所帮助。

  php调用类中的方法(一)

  <?php

  class foo{

  function bar() {

  return $this;

  }

  function hello() {

  echo "Hello";

  }

  }

  $foo = new foo();

  $foo->bar()->bar()->bar()->bar()->hello();

  ?>

  php调用类中的方法(二)

  <?php

  class example {

  var $name;

  var $sex;

  function name($name) {

  $this->name = $name;

  return $this;

  }

  function sex($sex) {

  $this->sex = $sex;

  return $this;

  }

  function trace() {

  print("Name: {$this->name},Sex: {$this->sex}");

  }

  }

  $person = new example;

  $person->name("lisha")->sex("female")->trace();

  ?>

  php调用类中的方法(三)

  /**

  * 双冒号操作符其意义应该是不实例化类而调用类中的方法或者成员等

  *

  */

  class man1

  {

  public function show()

  {

  echo "Hello World!";

  }

  }

  //由于show方法中没有this,所以不出错

  man1::show();

  class man2

  {

  public static $a = 1;

  public function show()

  {

  self::$a;

  echo "Hello World!";

  }

  }

  //由于show方法中没有this,所以不出错

  man2::show();

  class man3

  {

  public $a = 1;

  public static function show()

  {

  echo $this->a;

  echo "Hello World!";

  }

  }

  //这种是犯错的,static 方法里面不可以用this

  $p = new man3();

  $p->show();

  php调用类中的方法(四)

  class a

  {

  public function show()

  {

  print_r($this);

  echo $this->str;

  }

  }

  class b

  {

  public $str = "Hello World!";

  public function test()

  {

  a::show();

  }

  }

  /**

  *此处程序运行的结果是输出”Hello World!”

  *因为$this是指向当前类实例化的一个对象,其作用范围为当前对象的上下文

  *而此处A::show()中的$this其实是指向B类实例化的对象 ,而且正在对象上下文中,所以能够输出B中的变量$str的值

  */

  $test = new B();

  $test->test();

  php调用类中的方法(五)

  //自我感觉这个这种写法太绕了,最好不要用

  class man1{

  public function run()

  {

  print_r($this);//man2

  $this->say();//由于this为man2实例化的对象,故可以调用man2类中的say方法

  echo 'running';

  }

  }

  class man2 extends man1{

  public function say()

  {

  echo 'saying';

  }

  }

  $p = new man2();

  $p->run();

最佳答案由网友  TTs521  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
4

分享到:

其他回答

暂无其它回答!

    推荐