php类之间的相互调用——易读简明优化代码

来源:互联网 发布:origin 知乎 编辑:程序博客网 时间:2024/06/05 22:32

读Thinkphp源码时,学到的写法。

要点在于多用魔术方法

1.A类的方法中调用B类

使用__autoload()方法

A.class.php

<?php

class A{

public function aa(){

echo '我是A类方法';

B::bb();

}

public function __autoload($classname){

$classpath="./".$classname.'.class.php';
  if(file_exists($classpath)){
  require_once($classpath);

}

}

}

?>

----------------

B.class.php

<?php

class B{

static public function bb(){

echo '我是B类方法';

}

}

?>

2.父类调用子类方法

增加红字内容

A.class.php

<?php

A::aa();

class A{

static function aa(){

echo '我是A类方法';

B::bb();

B::cc();

}

public function __autoload($classname){

$classpath="./".$classname.'.class.php';
  if(file_exists($classpath)){
  require_once($classpath);

}

}

}

?>

----------------

B.class.php

<?php

class B{

static protected $z;

static public function bb(){

echo '我是B类方法';

self::$z=new C();

}

static pbulic function __callstatic($method,$args){

if(method_exists(self::$z,$method)){

return call_user_func_array(array(self::$z,$method),$args);

}

}

}


class C{

public function cc(){

echo '这是C类方法';

}

}

?>



0 0