Kyl*_*Dye 0 php oop class autoload
我有一个抽象的"对象"类,提供基本的CRUD功能以及验证等.通常我会使用__autoload($ name)魔术函数来加载一个存在于自己的文件中的类,名称与类I相同希望懒加载.代码看起来像这样,你可以想象它变得非常重复.
final class bicycle extends object {
public function __construct($id=null) {
parent::__construct($id, __CLASS__);
}
public function __toString() {
return($this->name);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我是否能以某种方式动态生成这些类,因此我不必反复创建相同的功能 - 从而减少开销和设计时间.PHP5甚至支持这个还是我只是高估了OO PHP的强大功能?
谢谢!
为什么不把__construct和__toString方法的代码放在object类的定义中而不是复制粘贴呢?
这样的事情应该做:
class object {
public function __construct($id = null) {
$this->name = get_class($this);
}
public function __toString() {
return($this->name);
}
protected $name;
}
final class bicycle extends object {
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
$a = new bicycle();
var_dump($a);
Run Code Online (Sandbox Code Playgroud)
你得到 :
object(bicycle)[1]
protected 'name' => string 'bicycle' (length=7)
Run Code Online (Sandbox Code Playgroud)
这意味着类的实例,bicycle名称property为正确的值.
无需复制粘贴任何代码 - 除了bicycle类本身的定义.
作为旁注,如果你真的想动态生成一个类,你可以使用这样的东西:
$code = 'final class bicycle extends object {}';
eval($code);
Run Code Online (Sandbox Code Playgroud)
您只需$code动态构造变量.
但我强烈建议不要这样做:
new bicycle"而没有宣布课程感觉不对!eval声明一个新类并不是那么痛苦,我肯定更喜欢复制粘贴 - 修改几行而不是使用这样的东西.
| 归档时间: |
|
| 查看次数: |
604 次 |
| 最近记录: |