Мгм, убийственный аргумент. Даже не поспоришьНекрасиво
__construct($required, $params = array())
пруфлинк в студиюАвтор оригинала: baev
— дело в том, что сейчас как бы общепринятой является точка зрения, что у человека после 25 лет мозг «не развивается»: количественно знания могут накапливаться, а вот качественные изменения могут быть только в сторону умственного помешательства.
И речь как раз про то, что в 28 лет начинать интересоваться «программированием, логикой и цифрами, которых так избегал в школе» — уже поздно. Неадекватно возможностям.
class User {
public static function constructById($id) {
$self = new static;
return $self->loadById($id) ? $self : null; // Exception по вкусу
}
public static function constructBySession(ISession $Session) {
...
}
}
— у меня информация со слов моей матери-психолога.пруфлинк в студию
Конечно можно:Можно узнать зачем?
Просто мой жизненный опыт не подтверждает эту теорию. Снижается способность к обучению - да. Но не полностью - это раз. И не чётко в 25 - это два. Имхо у всех по разному.без пруфлинка в данном вопросе никак. бумажка важнее собственного жизненного опыта
Абсолютно ничем не подкреплённое мнение, имхоСобственно проблемы с перегрузкой нет как класс. Она возникла из-за строгой типизации. В динамически типизированных этого вопроса не стоит вовсе.
Я толи ступил, толи речь о фабрике и классе сущности в одном флаконе?Я это так обхожу:
и?Вопрос стоит, хотя бы судя потому, что type hinting таки имеется.
У метода параметры могут быть любого типа вообще.Полиморфизм то как попользовать
class MyClass {
private Class1 object1;
private Class2 object2;
public MyClass( Class1 object1, Class2 object2 ) {
this.object1 = object1;
this.object2 = object2;
}
public MyClass( Class1 object1 ) {
this( object1, new Class2( /* default params */ ) )
}
public MyClass( Class2 object2 ) {
this( new Class1( /* default params */ ), object2 )
}
}
Например, создаём дерево (класс Tree), содержащее элементы одного класса E (одного из допустимых).вот я себе не могу представить ситуацию, когда мы при создании экземпляра MyClass не знаем, что передаем ему в конструктор.
Не осознал полета мысли. Почему именно так?И объект, реализующий дерево, должен позволять добавлять в себя только объекты того класса, объект которого был передан конструктору класса Tree в качестве параметра - корневого элемента.
interface TreeElement {};
interface Tree implements TreeElement {
public function __construct(TreeElement $obj) {}
public function addNode(TreeElement $obj) {}
};
class ConcreteTree implements Tree {
public function __construct(TreeElement $obj) {
$this->_root = $obj;
}
public function addNode(TreeElement $obj) {
if ($obj instanceof get_class($this->_root)) {
// чего-то делаем
} else {
throw new MyConcreteTreeException('wrong type of Node');
}
}
}
$t = new Tree(new Item implements TreeElement);
$t->addNode(new SomeOtherItem implements TreeElement);
$t->addNode(new AndOneMoreItem implements TreeElement);