[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Комбинируемый класс
Страницы: 1, 2
Shurik_17
Цитата (chee @ 23.08.2017 - 13:00)
Shurik_17, Я тебе гарантирую, ты с таким подходом убъешь еще 2-3 года на изучение ООП.
То что скинул тебе Michael является мертвым трюком в php, так как примеси реализуются трейтами.
Тебе не примеси нужны, тебе нужно нормальное разделение на сущности. Я как будто в пустоту всё пишу.


то есть все компоненты, к примеру объекта магазин, разбить на модели?

- StoreModel
- StorePostsModel
- StorePagesModel
- StoreCategoriesModel
- StoreProductsModel

так?
chee
Цитата (Shurik_17 @ 23.08.2017 - 13:05)
так?

не совсем

- MyNamespace\Entity
- MyNamespace\Entity\Post
- MyNamespace\Entity\Page
- MyNamespace\Entity\Category
- MyNamespace\Entity\Product

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

Прочитай это, что бы понять, что я выше написал http://php.net/manual/ru/language.namespaces.php

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Shurik_17
Цитата (chee @ 23.08.2017 - 13:08)
Цитата (Shurik_17 @ 23.08.2017 - 13:05)
так?

не совсем

- MyNamespace\Entity
- MyNamespace\Entity\Post
- MyNamespace\Entity\Page
- MyNamespace\Entity\Category
- MyNamespace\Entity\Product

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

Прочитай это, что бы понять, что я выше написал http://php.net/manual/ru/language.namespaces.php

я понимаю принцип пространства имен. Не могу понять (скорее не знаю) как то что я привел выше реализовать иначе.
Shurik_17
действитель я рассматриваю классы не как объекты а как библиотеку функций, вероятно в этом проблема)
chee
Shurik_17, ну вдруг ты не знаешь, если знаешь, то ок.

Цитата (Shurik_17 @ 23.08.2017 - 13:20)
как то что я привел выше реализовать иначе

Реализую для людей, а не только для себя.

Еще раз, посмотри на готовые решения
http://www.doctrine-project.org/about.html
http://propelorm.org/

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
chee
Цитата (Shurik_17 @ 23.08.2017 - 13:32)
а как библиотеку функций, вероятно в этом проблема)

безусловно

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Shurik_17
я усердно изучаю модели но тем временем придумал еще один велосипед

у базовой модели есть дочерние, суть в том что бы обратиться к ним через переменную не объявляя дочерние вручную

к примеру

$store = $this->stores->getOne($id);

$posts = $store->posts->getAll();


class StoresModel extends Core
{
// дочерние модели

static private $childrens_models = ['posts' => 'store\storePosts'];
static private $inited_models = false;

public function __construct()
{
if(false == self::$inited_models) {
foreach(self::$childrens_models as $k=>$m) {
$this->$k = new $m;
}
self::$inited_models = true;
}
}
}

Arh
Shurik_17
Цитата
Комбинируемый класс


Я это так понял.

<?php

/**
* Голова
*
* Class Head
*/

class Head {

/**
* Открыть рот
*/

public function openMouth () {
echo 'открыть рот';
}

}


/**
* Человек
*
* Class People
*/

class People {

public $Head;
public $Hand;
public $Leg;
public $Ass;
public $Tits;

public function __construct($Head, $Hand, $Leg, $Ass, $Tits) {

$this->Head = $Head;
$this->Hand = $Hand;
$this->Leg = $Leg;
$this->Ass = $Ass;
$this->Tits = $Tits;

}

}


$People = new People(
new Head(),
new Hand(),
new Leg(),
new Ass(),
new Tits()
);


$People->Head->openMouth(); // открыть рот



_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.