Реализация пользовательского наследования Yii - PullRequest
0 голосов
/ 14 декабря 2011

Я хочу иметь абстрактный класс ( Отчет ) (который находится в защищенном / компонентах) и подклассы, которые расширяют Отчет . Эти классы не имеют конкретной таблицы (MySQL). Эти классы представляют различные типы отчетов с разными полями для отображения в слове-отчете.

Возможно ли сделать это в Yii? Что-то особенное, что я должен объявить в этих классах?

Я хочу сделать что-то вроде этого:

In protected/components:
abstract class Report {
    private $name;

    public function __construct( $name ) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }
}

Then in protected/models:
class Proposal extends Report {
    private $contract_date;

    public function __construct($name, $contract_date) {
        parent::__construct($name);
        $this->contract_date = $contract_date;
    }
}

When I try to instantiate Proposal:
$report = new Proposal(3, 4);

I got this error:
2011/12/14 13:37:21 [error] [php] include(Proposal.php): failed to open stream: No such file or directory (/var/www/yii-1.1/framework/YiiBase.php:421)

Любые указатели / помощь высоко ценится.

Ответы [ 4 ]

0 голосов
/ 30 января 2013

это хороший пример того, что вам нужно http://www.yiiframework.com/wiki/198/single-table-inheritance/

0 голосов
/ 14 декабря 2011

Попробуйте поместить Proposal.php, который содержит ваш класс Proposal, в защищенные / компоненты

0 голосов
/ 14 декабря 2011

Пожалуйста, проверьте этот код в вашем основном конфигурационном файле:

'import'=>array(
    'application.models.*',
    'application.components.*',
),
0 голосов
/ 14 декабря 2011

Я не уверен, имеете ли вы в виду вспомогательный класс .Все должно быть в порядке, если вы импортируете прямо в Yii

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...