|
Trieg ↓
|
 |
|
14 Сентябрь, 2010, 03:18:14
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 6
Сообщений: 41 Сила слова: 14.63
|
буду краток.
Нам захотелось юзать множественное наследование (ну или еще какуюнить хуергу), а этого само собой в пыхе нету.
Теоретическое решение проблемы:
1 - меняем логику аутолода
было
function loadClass ($className)
{
$file = 'Directory/Class/' . str_replace(array('\\', '_'), '/', $className) . '.php';
if(file_exists($file))
{
require_once $file;
}
}
стало
function loadClass ($className)
{
$file = 'Directory/Class/'. str_replace(array('\\', '_'), '/', $className) . '.php';
$cache= 'Directory/Cache/'. str_replace(array('\\', '_'), '/', $className) . '.php';
if(! file_exists($cache) || filemtime($cache) < filemtime($file))
{
$compiler = new PCompiler ();
$compiler-> readFile($file)-> applyExtension(array('utf8String', 'typeHint', 'classMultiExtends'))-> getNewCode();
file_put_content ($cache, $compiler);
}
require_once $cache;
}
2 - умираем и реализуем PCompiler и его расширения.
3 - радуемся жизни и добавляем разные плюшки по мере надобности
На первый взгляд кажется что это будет удобно. (я просто мечтаю переебенить большинство нативных функций, хотя это наверно самое бесполезное что можно сделать).
В общем кто что думает по этому поводу. Есть ли смысл с этим замарачиватся? Вы бы сами стали юзать подобное?
|
|
|
|
|
Записан
|
|
|
|
|
adw0rd ↓
|
 |
|
14 Сентябрь, 2010, 03:27:11 , спустя 8 минут 57 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17623 Сила слова: 1.67
|
Я думаю это прикольно, только потому что пхп гавно
Где реализацию PCompiler посомтреть?
|
|
|
|
|
Записан
|
|
|
|
|
Trieg ↓
|
 |
|
14 Сентябрь, 2010, 04:57:01 , спустя 1 час 29 минут 50 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 6
Сообщений: 41 Сила слова: 14.63
|
Мне эта мысля тока седня в голову залетела, так что пощупать пока нечего.
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
14 Сентябрь, 2010, 08:01:48 , спустя 3 часа 4 минуты 47 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 344
Сообщений: д-о-х-у-я! Сила слова: 1.65
|
множественное наследование?) зачем оно? :) сборщик пхп кода из других классоц писать имхо пиздец) может лучше отказаться от этой идеи и писать как все? используя немножественное наследование?) ага, пых гавно
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
Абырвалг ↓
|
 |
|
14 Сентябрь, 2010, 09:58:27 , спустя 1 час 56 минут 39 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
PHP Infected, симфоеб, маконенавистник
Группа: Джедаи Карма: 80
Сообщений: 6096 Сила слова: 1.31
|
Нам захотелось юзать множественное наследование
наверно вы просто что-то не так делаете
|
|
|
|
|
Записан
|
PHP does the job since 1995 Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
|
|
|
|
SpartakuS ↓
|
 |
|
14 Сентябрь, 2010, 10:05:29 , спустя 7 минут 2 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 32
Сообщений: 2444 Сила слова: 1.31
|
И почему это пых говно в контексте этой темы?
|
|
|
|
|
Записан
|
 цска ебаное гавно.
|
|
|
|
mario ↓
|
 |
|
14 Сентябрь, 2010, 10:08:31 , спустя 3 минуты 2 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
wazzup
Группа: Джедаи Карма: 67
Сообщений: 6162 Сила слова: 1.09
|
И почему это пых говно в контексте этой темы?
пых по дефолту говно! )))
|
|
|
|
|
Записан
|
|
|
|
|
Trieg ↓
|
 |
|
14 Сентябрь, 2010, 11:07:30 , спустя 58 минут 59 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 6
Сообщений: 41 Сила слова: 14.63
|
на множественное наследование почти срать так как оно уже есть "из коробки" (вроде как..)
чисто в прикол
public function : array:string parseTemplate (:localFile $file) cache {$file.MTime }
{
if(self.isTpl ($file))
{
: return array(this.getPattern ($file), this.getBlock ($file));
}
else
{
: return parent.newTemplate ($file);
}
}
на выходе что то типа
public function parseTemplate ($file)
{
use Framework\Cache\SqLite3\Method as Cache;
$file = realpath($file);
if(! is_file($file) || ! is_readable($file))
{
throw new \InvalidArgumentException ('axtyng');
}
if($cache = Cache:: get(func_get_args(), array(Cache:: CHECK_MTIME, $file))
{
return $cache;
}
$__checkFun = function($var)
{
if(! (is_string($var) || is_array($var)))
{
throw new \LogicException ('Only array and string');
}
return $var;
};
return Cache:: add(
func_get_args(),
$__checkFun((self:: isTpl($file)) ? array($this-> getPattern($file), $this-> getBlock($file)) : parent:: newTemplate($file))
);
}
пример конечно злой и не кто такое делать не будет, но вот местами залепить автоматическую кодогенерацию это вариант
PS:при пральном применении множественное наследование не хило облегчает жизнь.(тока подумать какой простор для быдлокодинга....)
|
|
|
|
|
Записан
|
|
|
|
|
SpartakuS ↓
|
 |
|
14 Сентябрь, 2010, 11:13:14 , спустя 5 минут 44 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 32
Сообщений: 2444 Сила слова: 1.31
|
В пыхе множественнго наследования нет. А почти в любом фреймворке есть кодогенераторы.
|
|
|
|
|
Записан
|
 цска ебаное гавно.
|
|
|
|
adw0rd ↓
|
 |
|
14 Сентябрь, 2010, 11:30:35 , спустя 17 минут 21 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17623 Сила слова: 1.67
|
И почему это пых говно в контексте этой темы?
может потомучто у него нет множественного наследования, вроде из-за этого вся тема зародилась, нет?
|
|
|
|
|
Записан
|
|
|
|
|
SpartakuS ↓
|
 |
|
14 Сентябрь, 2010, 11:52:58 , спустя 22 минуты 23 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 32
Сообщений: 2444 Сила слова: 1.31
|
adw0rd, ну в java нет множественного наследования. Ява от этого становится говном?
Ну и сам я не занимался проблеммой множественного наследования, но вот цитата с википедии:
Множественное наследование критикуется за следующие проблемы, возникающие в некоторых языках, в частности, C++:
* семантическая неопределенность часто совокупно представляется как Проблема ромба.[3]
* отсутствует возможность явного многократного наследования от одного класса[источник не указан 261 день]
* порядок наследования изменяет семантику класса[источник не указан 261 день]
Множественное наследование в языках с конструкторами в стиле C++/Java усиливает проблему наследования конструкторов и последовательностей конструкторов, таким образом создавая проблемы с поддержкой и расширяемостью в этих языках. Объекты в отношениях наследования со значительно отличающимися методами конструирования довольно трудны для реализации в рамках парадигмы последовательности конструкторов.[уточнить]
Ну и если что - мнжественное наследование можно частично эмулировать делегированием (вроде так метод называется).
|
|
|
|
|
Записан
|
 цска ебаное гавно.
|
|
|
|
adw0rd ↓
|
 |
|
14 Сентябрь, 2010, 12:11:45 , спустя 18 минут 47 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17623 Сила слова: 1.67
|
SpartakuS, значит java гавно
|
|
|
|
|
Записан
|
|
|
|
|
kostyl ↓
|
 |
|
14 Сентябрь, 2010, 12:18:45 , спустя 7 минут
|
НЕ ХУЕТА!
ХУЕТА!
|
занедельный антипаттерн
Группа: Джедаи Карма: 60
Сообщений: 3522 Сила слова: 1.7
|
бля, сколько я программил, никогда не надо было множественное наследование, ну может были намёки на идеи в некоторых местах, но они не были такими весомыми, даже если учитывать, что языки эту фичу не поддеривали...
|
|
|
|
|
Записан
|
качество жизни обратно пропорционально количеству лени
|
|
|
|
kostyl ↓
|
 |
|
14 Сентябрь, 2010, 12:25:43 , спустя 6 минут 58 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
занедельный антипаттерн
Группа: Джедаи Карма: 60
Сообщений: 3522 Сила слова: 1.7
|
Ну и если что - мнжественное наследование можно частично эмулировать делегированием (вроде так метод называется).
Вообще последнее время все советуют любое наследование заменять делегированием, особенно если не катит подстановка Лискоу...
|
|
|
|
|
Записан
|
качество жизни обратно пропорционально количеству лени
|
|
|
|
Trieg ↓
|
 |
|
14 Сентябрь, 2010, 12:29:39 , спустя 3 минуты 56 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 6
Сообщений: 41 Сила слова: 14.63
|
В пыхе множественного наследования нет.
А как же Traits и Grafts... кстати Traits уже в транке.
PS: так и знал что пример с наследованием будет не удачным =)
|
|
|
|
|
Записан
|
|
|
|
|