PHP低耦合,高可扩展性应用的解决方案
(先把例子写下来,有时间再完善文字)
一个不能完美解决的方案:
在不同的文件中定义类名相同的类,根据需要包含不同的文件
// 定义在 cls/A.php
class A {
public static function go() {
return 'i m cls/A.php';
}
}
// 定义在 my/A.php
class A {
public static function go() {
return 'i m my/A.php';
}
}
$clsf = 'my/A.php'; // 现在要调用的是my/A.php
require_once $clsf;
$cls = new A();
$cls->go();
A::go();
缺点:
文件cls/A.php的类A不能被my/A.php的类A继承(当然反过来也一样)
第二种解决方案:
统一接口,static/const 类型在抽象类中定义,通过变量函数来创建不同的类的实例
interface I {
public function test();
}
abstract class A {
public static $my = array('a', 'b');
public static function go() {
return 'i m public static A::go()';
}
}
class My extends [...]