php类之间的相互调用——易读简明优化代码
2016-07-07 22:42
633 查看
读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类方法';
}
}
?>
要点在于多用魔术方法
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类方法';
}
}
?>
相关文章推荐
- php安装扩展模块(curl模块)
- thinkphp5 ACL用户权限模块
- 2016/07/07 PHP的线程安全与非线程安全版本的区别
- php-fpm使用
- Tab系列 03 FragmentPagerAdapter + Fragment + ViewPager
- 关于PHP中eval函数的返回值
- PHP数据对象模型(PDO)
- PHP中使用CURL实现GET和POST请求
- PHPCURLGETPOST通用类
- php中的时间处理类
- PHP原生态分页
- PHP API接口调用跨域问题
- PHP代码中文输出乱码和转码问题
- 字符串和数字比较
- PHPdatatable服务器端处理(2)
- 漂亮的thinkphp分页类
- PHPdatatable服务器端处理(1)
- php高效率写法
- TP3.2.3 求出每年每月详细数据
- PHP把一段时间处理成分时间段数组(带有名称及截止时间)