Я не вижу смысла использовать в PHP статический класс вместо функции…
$mod=modules::getInstance() — я считаю, что это идиотизм. (касательно PHP)
$mod->cache('a.php');
$mod->include('a.php');
Вариант выглядит намного яснее:
mods()->cache('cache.dat')->phpcache('cache.php')->include('a.php')->include_modules();
Либо:
$mod=mods();
$mod->cache('a.php');
$mod->… ну итд
Если вы мне объясните, какое преимущество в «объектной моделе» (касательно PHP), я приму иную точку зрения. А «Так НАДО» — это, простите, тупизм.
p.s. Если хотите, могу не называть это singleton — смысл не потеряется. :)
>>> А если вам понадобится использовать лазер где-то в другом проекте отдельно от корабля, то придётся писать $laser->laser_heatEmergency()? По-моему это начало моего второго варианта.
Вы совершенно не поняли суть идеи.
Я не прав, потому что плохо объяснил всё.
Суть идеи НЕ РЕАЛИЗОВЫВАТЬ лазер внутри корабля. Нет!
Суть идеи (я немного в конкретику вдарюсь):
1) Дополнять 'корабль' независимыми друг от друга разработчиками, зависимыми устройствами.
2) Каждое устройство — это отдельный класс.
3) Интерфейс устройств описывается к классе корабля.
4) Файлы должны быть независимыми.
То есть:
Energy.php
//Всё, что связанно с энергией на корабле
class Energy{
var $maxenergy, $incenergy;
}
//Интерфейс энергии
class Ship{
public $energy;
function __construct(){
$this->energy=new energy();
}
function energy_get(){...}
function energy_use(){...}
}
Уберите этот файл из модулей — система продолжит функционировать (если другие устройства не зависят от energy_get/energy_use). Просто на корабль невозможно будет поставить устройство Energy.
Я предложил метод, который упрощает разработку, НО не настаивает в том, чтобы лепить классы в ОДНО.
Спасибо.
Наглядность пропадает.
function name($input){
if ($input[0]){
str_replace($input[1], $input[2])…
}
}
Значит это не Синглтон :)
$mod=modules::getInstance() — я считаю, что это идиотизм. (касательно PHP)
$mod->cache('a.php');
$mod->include('a.php');
Вариант выглядит намного яснее:
mods()->cache('cache.dat')->phpcache('cache.php')->include('a.php')->include_modules();
Либо:
$mod=mods();
$mod->cache('a.php');
$mod->… ну итд
Если вы мне объясните, какое преимущество в «объектной моделе» (касательно PHP), я приму иную точку зрения. А «Так НАДО» — это, простите, тупизм.
p.s. Если хотите, могу не называть это singleton — смысл не потеряется. :)
Я работал с системой Эвентов — после данной модификации:
1) код стал намного чище
2) система ускорилась в 3 раза.
Я понимаю, что вы называете эвентами.
Класс Эвентов на PHP (особенно в реализации call_user_func) будет вызываться в несколько раз дольше, чем готовый, собранный класс.
class Energy{
var $maxenergy, $incenergy;
function get(){...}
function use(){...}
}
//Интерфейс энергии
class Ship{
public $energy;
function __construct(){
$this->energy=new energy();
}
}
Вы совершенно не поняли суть идеи.
Я не прав, потому что плохо объяснил всё.
Суть идеи НЕ РЕАЛИЗОВЫВАТЬ лазер внутри корабля. Нет!
Суть идеи (я немного в конкретику вдарюсь):
1) Дополнять 'корабль' независимыми друг от друга разработчиками, зависимыми устройствами.
2) Каждое устройство — это отдельный класс.
3) Интерфейс устройств описывается к классе корабля.
4) Файлы должны быть независимыми.
То есть:
Energy.php
//Всё, что связанно с энергией на корабле
class Energy{
var $maxenergy, $incenergy;
}
//Интерфейс энергии
class Ship{
public $energy;
function __construct(){
$this->energy=new energy();
}
function energy_get(){...}
function energy_use(){...}
}
Уберите этот файл из модулей — система продолжит функционировать (если другие устройства не зависят от energy_get/energy_use). Просто на корабль невозможно будет поставить устройство Energy.
Я предложил метод, который упрощает разработку, НО не настаивает в том, чтобы лепить классы в ОДНО.
energy()->get_ship_energy($ship)
Мой метод:
$ship->get_energy();
Что нагляднее?
Что быстрее выполнится?