В последнее время очень часто появляются фреймворки которые позволяют разработчику реализовывать функционал в свободном виде не прибегая к наследованию от интерфейсов. Примеры можно увидеть в таких как EJB 3, JUnit 4, JSF 2, Spring Framework 3 и т.д.
Под катом найдете обсуждение обоих подходов.
Читать полностью »
Метка «reflection» - 2
Ограничения через реализацию интерфейса против свободы через рефлекшн
2012-04-16 в 13:25, admin, рубрики: interfaces, java, reflection, метки: interfaces, java, reflectionПрактическое использование PHP Reflection
2012-03-09 в 10:29, admin, рубрики: php, reflection, метки: PHP, reflectionЗахотелось мне прописывать экшны и параметры с проверкой в моем контроллере примерно таким образом:
class Controller { /** * Тестовое действие * @a /^[0-9]+$/i * @b /^[0-9a-z]+$/i */ function testAction ( $a, $b = 'something' ) { echo 'a: '.$a.', b: '.$b; } }
Идею прописывать необходимые параметры передаваемые в URL прямо в аргументах функции я подглядел в Symfony2. Там же использовались комментарии PHPdoc для определения маршрутов. Выглядело это как чудо и я решил разобраться магия это или наука.
Disclaimer!
Всё написанное не претендует на технологическую новизну, а является демонстрацией возможностей PHP Reflection API. Преобразователь ЧПУЧитать полностью »
PHP / Как получить доступ ко всем свойствам объекта, не используюя отражение
2012-02-13 в 12:26, admin, рубрики: php, php 5.3, reflection, метки: PHP, php 5.3, reflection Для чего получать доступ ко всем свойствам объекта и при этом не менять его интерфейс? Например, для того, чтобы написать свою сериализацию. Или чтобы передать объект в приемлемом виде используя http. Или для чего-нибудь ещё.
Возьмём для эксперимента простой класс.
class aClass
{
protected $protected_property = 'protected_value';
private $private_property = 'private_value';
public $public_property = 'public_value';
}
$an_object = new aClass;
var_dump($an_object);
// object(aClass)#1 (3) {
// ["protected_property":protected]=>
// string(15) "protected_value"
// ["private_property":"aClass":private]=>
// string(13) "private_value"
// ["public_property"]=>
// string(12) "public_value"
// }
Если использовать отражение, то получить все свойства объекта можно получить, например, вот такимЧитать полностью »