Помогите разобраться в классах

Platon

Новичок
Вот хочу сделать некоторые изменения для своего ИМ. Я новичок в php и ООП. Не могу разобрать построение классов в этой CMS, например:

PHP:
class SPropertiesRenderer {

    public $inputsName = 'productProperties';
    public $noValueText = '- none -';
    public $useMultipleSelect = false;
    protected $properties = null;
    protected $productModel = null;
    protected $propertiesData = array();

    public function __construct() {
        ShopCore::$ci->load->helper('form');
    }

    ......................................................................

protected function _loadProductPropertiesData($locale = null, $forsed = false) {
        $this->propertiesData = null;

        if ($this->productModel === null)
            return false;

        $propertiesDatas = SPropertiesQuery::create()
                ->filterByShowInCompare(true)
                ->orderByPosition()
                ->orderByPosition(Criteria::ASC)
                ->useSProductPropertiesDataQuery()
                ->filterByLocale(ShopController::getCurrentLocale())
                ->filterByProductId($this->productModel->id)
                ->endUse()
                ->joinWithI18n()
                ->distinct()
                ->find();

        if (sizeof($propertiesDatas) > 0) {
            foreach ($propertiesDatas as $p) {
                $propertyData = $p->getSProductPropertiesDatas();
                foreach ($propertyData as $k => $v) {
                    if ($v->getProductId() == $this->productModel->id) {
                        $this->propertiesData[$propertyData[$k]->getPropertyId()][] = $v;
                    }
                }
            }
        } else {
            $this->propertiesData = array();
        }
    }

      .................................................

}
Не могу понять построение (синтаксиса) методов, например как в методе _loadProductPropertiesData
идет присвоение значения переменной $propertiesDatas:
1. SPropertiesQuery::create() - здесь понятно - идет обращение к методу create() класса SPropertiesQuery
2. Подскажите что имеется ввиду дальше через знак ->:
->filterByShowInCompare(true)
->orderByPosition()
->orderByPosition(Criteria::ASC)
->useSProductPropertiesDataQuery()
->filterByLocale(ShopController::getCurrentLocale())
->filterByProductId($this->productModel->id)
->endUse()
->joinWithI18n()
->distinct()
->find();
Это что создаются объекты, или это продолжения обращения к методам того же класса _loadProductPropertiesData?
 

WMix

герр M:)ller
Партнер клуба
обращению к методу/аттрибуту обьекта
 

WMix

герр M:)ller
Партнер клуба
нет, обращение внутри класса делается через self::, я говорил о обьекте
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Это что создаются объекты, или это продолжения обращения к методам того же класса _loadProductPropertiesData?
Скорее всего это обращения к методам объекта, созданного в SPropertiesQuery::create(), его методы возвращают $this, что позволяет делать такие цепочки.

Поищи в интернетах по ключевым словам "fluent interfaces"
 
Сверху