Вопрос насколько публику на конференции интересует эта база данных. Но посмотрев план доклада, все таки складывается впечатление, что он не будет ограничен только DB2.
public function fire($arguments) {
$funcCreation = '$ob=new '.$this->getCallClassName().'();$ob->'.$this->getCallMethodName().'($arguments);';
eval($funcCreation);
}
В чем смысл использовать eval, когда можно написать public function fire($arguments) {
$objClass = $this->getCallClassName();
$obj = new $objClass;
call_user_func_array(array($obj, $this->getCallMethodName()), $arguments);
}
Когда в ход идел eval() — дело пахнет жареным.
И наконец вместо написания комментария /*
* Base aspect class. Must be extended in all aspects
* IMPORTANT: Each aspect should have constructor without arguments
*/
abstract class Aspect {};
Если можно просто финализировать конструктор: /*
* Base aspect class. Must be extended in all aspects
* IMPORTANT: Each aspect should have constructor without arguments
*/
abstract class Aspect {
final public function __construct() {}
};
Например в магическом методе
public function __call($method, array $args) {}
название метода и список аргументов разделены на два разных параметра, разве это не пример того как принято?
И мне непонятна эта строчка github.com/kooler/PAF/blob/master/Framework/paf/joinpoint.php#L97
public function fire($arguments) {
$funcCreation = '$ob=new '.$this->getCallClassName().'();$ob->'.$this->getCallMethodName().'($arguments);';
eval($funcCreation);
}
В чем смысл использовать eval, когда можно написать
public function fire($arguments) {
$objClass = $this->getCallClassName();
$obj = new $objClass;
call_user_func_array(array($obj, $this->getCallMethodName()), $arguments);
}
Когда в ход идел eval() — дело пахнет жареным.
И наконец вместо написания комментария
/*
* Base aspect class. Must be extended in all aspects
* IMPORTANT: Each aspect should have constructor without arguments
*/
abstract class Aspect {};
Если можно просто финализировать конструктор:
/*
* Base aspect class. Must be extended in all aspects
* IMPORTANT: Each aspect should have constructor without arguments
*/
abstract class Aspect {
final public function __construct() {}
};
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
...
/**
* Finds and displays a Page entity.
*
* @Route("/{slug}", name="page_show")
* @ParamConverter("page", class="StfalconPageBundle:Page")
* @Template()
*/
public function showAction(Page $page)
{
return array(
'page' => $page,
);
}
дворецкийfavicon.