我有以下PHP类
class.property.php
class.location.php
class.amenity.php
class.category.php
所有四个类都处理不同类别的相应CRUD操作。我想重构我的代码,因此想要使用父子结构。
例如,我曾经在每个页面上初始化类。
$property = new Property($dbh);
$location = new Location($dbh);
$category = new Category($dbh);
$amenity = new Amenity($dbh);
然后我习惯单独访问类方法和属性,如
$property->user;
$property->contact;
$property->save();
$location->countries();
$location-states();
而且,每个班级都是单独执行的,而不是像这样访问它我想用这种方式。
$property = new Property($dbh)
上面应该是Parent类并且休息三个子类,所以我应该只能通过父类访问所有类方法和属性,例如我应该只能像这样访问它..
$property->location->countries();
$property->locations->states();
$property->location->countryId;
$property->amenity->name;
$property->amenity->save();
依旧......
我试图弄清楚如何做到这一点并推出了这个解决方案。
class Property{
public $amenity;
public function __construct() {
require_once('class.amenity.php');
$this->amenity = new Amenity;
}
}
class Amenity {
public function create($test) {
return $test;
}
}
现在,如果我想访问Amenity类中的create()方法,我只需调用
$property->amenity->create()
并且它有效,但是我想知道这是否是实现父子结构的正确方法,还是我错过了什么?
答案 0 :(得分:0)
无需create()
电话:
class Property{
public $amenity;
public function __construct() {
require_once('class.amenity.php');
$this->amenity = new Amenity;
}
}
class Amenity {
}
$property = new Property;
$amenity = $property->amenity;
最多,您需要保护属性,并使用getter和setter。