Каков правильный метод структурирования классов PHP как Parent Child? - PullRequest
0 голосов
/ 20 мая 2011

У меня есть следующие классы 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) 

вышедолжен быть родительским классом, а остальные три - дочерним классом, и поэтому я должен иметь доступ ко всем методам и свойствам класса только через родительский класс, например, я должен иметь к нему доступ только следующим образом.

$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;
    }
}

теперь, если я хочу получить доступ к методу create () в Amenityкласс, который я просто называю

$property->amenity->create()

, и это работает, однако я хотел бы знать, является ли это правильным методом реализации родительской дочерней структуры или я что-то упустил?

1 Ответ

0 голосов
/ 20 мая 2011

Нет необходимости в вызове 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;

В большинстве случаев вы захотите защитить свойства и использовать методы получения и установки.

...