php - это че реально так ? (multiple constructors)
нельзя написать
arrayReturningFunction[0]
чето я уже начинаю задумываться а стоит ли что-то делать на пхп.
а стоит ли что-то делать на пхпмы можем дать однозначный ответ
ты только спроси
В пхп вообще невозможна перегрузка функций, кроме как средствами func_get_args или магическими методами.
мы можем дать однозначный ответ
ты только спроси
а стоит ли что-то делать на пхп ?
К сожалению, чтобы не писать на пхп говнокод и начать творить магию, надо ограбить не одну сотню или даже тысячу корованов, людей, которые это осилили, можно пересчитать по пальцам, ибо в большинстве случаев люди либо не осиливают и привыкают к говнокоду, либо изначально со слишком большим отвращением смотрят на пхп.
Так что думай сам, хочешь ли ты этого.
class B
{
void F;
}
class A : B
{
override F
}
?
Если просто "новая версия" функции, то оно по умолчанию так и есть. Ключевое слово final в базовой функции может запретить создание таковой.
следующая вещь
class B
{
private $_isi;
_constuctor(ISomeInterface g)
{
$self._isi = $g
}
}
class G : ISomeInterface
{
}
Засчет того что все динамически
конструкция new B(new G
приведет к тому что хост интерфейса будет сразу же раскрыт в _isi хочу жесткую типизацию при обращении к $_isi такое реально?
A)$b)->someMethod;
Однако изнутри класса ты можешь сделать parent::callSomething;
приведет к тому что хост интерфейса будет сразу же раскрыт в _isi хочу жесткую типизацию при обращении к $_isi такое реально?Ничего не понял. Ты хочешь работать с $_isi как с интерфейсом, а не как с тем классом, которым он является? Нет, так нельзя, см. пост чуть выше. Можешь только проверять, что переменная реализует твой интерфейс, запрашивая is_a($this->_isi, "ISomeInterface") или is_subclass_of(...) с теми же параметрами.
вот ты мне скажи такую вещь, если на пхп писать что-нить большое и псевдо объектно ориентированное, сколько у команды будет ошибок?
если на пхп писать что-нить большое и псевдо объектно ориентированное, сколько у команды будет ошибок?42
То есть я рекомендовал бы писать то, что ты хочешь, на пхп, только если у вас есть хотя бы один человек, который писал на пхп большие проекты, умеет это делать и будет в необходимых местах больно бить всех остальных по рукам.
Мегаплан вон на PHP5 написан, наверняка в ОО стиле. На вид очень приличный продукт, немаленький и растет еще. На форуме вроде есть оттуда люди, может выскажутся, как оно, на PHP такие вещи делать.
либо считать php чем-то вроде явы, городить сложную систему объектов, натыкаться на недоделанный ООП и испытывать глюкипосоветуй отцовский код, с MVC на php, что лучше посмотреть как это делают правильно и быстро?
У меня лежит сейчас на винте пхп-шные исходники одного очень-серьезного, прибыльного и очень посещаемого российского проекта, написанного полностью по фэншую с применением фреймворка onPHP. В этом проекте несколько тысяч .php файлов с разными классами, контроллерами, моделями, хелперами и прочей хренотой. Так что проекты, могу подтвердить, имеются. Как человек, вынужденный было залезать к ним в код, могу сказать, что поддерживать это невозможно и, по-моему, они сами уже не понимают, как это работает. И вообще со всей пролетарской ненавистью заявляю, что MVC и ORM придумали неполноценные люди.
А так всякие phpBB вроде бы юзают MVC, они вроде любят всё такое. Попробуй их посмотреть.
<?php
class B implements IGet
{
public function get
{
$v = array(1, 2, 3);
return $v;
}
public function f1
{
new childA($this);
}
public function f
{
$rc = new ReflectionClass( "childA" );
$c = $rc->newInstance($this);
}
public static $_instance;
public static function getInstance
{
if( ! (self::$_instance instanceof self) )
{
self::$_instance = new self;
}
return self::$_instance;
}
private function __construct
{
}
}
interface IGet
{
public function get;
}
class A
{
public function __construct {
$argv = func_get_args ;
print_r ( $argv );
print "<br>";
print_r ( $argv [0]->get );
print "<br>";
}
}
class childA extends A
{
public function __construct
{
parent::__construct(func_get_args;
}
}
$b = B::getInstance;
echo "1<br/>";
$b->f;
echo "2<br/>";
$b->f1;
echo "3<br/>";
new childA($b)
?>
print_r ( $argv [0]->get );
замени на
print_r ( $argv [0][0]->get );
Еще на конце new childA($b) точка с запятой.
А еще нафига у тебя инстанс публичный?
пойдука я спать
а как передать чтобы во второй массив не убиралось ?
Мегаплан вон на PHP5 написан, наверняка в ОО стиле. На вид очень приличный продукт, немаленький и растет еще. На форуме вроде есть оттуда люди, может выскажутся, как оно, на PHP такие вещи делать.В мегаплане есть свой удобный MVC-фреймворк и очень жесткие правила написания кода, касающиеся как codestyle, так и "правил хорошего тона". Так что писать достаточно удобно. Сейчас еще перейдем на версию 5.3, чтобы избавиться от костылей, связанных с отсутствием позднего статического связывания, и вообще норм будет
Но, конечно, хорошо писать на PHP умеют единицы, судя по тому, как сложно найти хороших программистов к нам в команду и сколькие потом не проходят испытательный срок.
и очень жесткие правила написания кода
потом не проходят испытательный срок.
скока сейчас команда пхпшников у мегаплана?
Вообще нас вроде чуть меньше 30, но разные команды работают над разными проектами, сейчас над мегапланом вроде бы работают около 15 человек. За точность не ручаюсь, потому что в последнее время набрали несколько разработчиков, с которыми я еще даже не знаком.
а как передать чтобы во второй массив не убиралось ?
class childA extends A
{
public function __construct
{
$args = func_get_args;
call_user_func_array(array(parent, '__construct' $args);
}
}
Оставить комментарий
bav46
http://ordinarywebguy.wordpress.com/2008/01/31/multiple-cons...через такую каку делать?