Метка «override»

Всем привет.

Каждый, кто программирует на Symfony 2, сталкивался с ситуацией, когда надо переопределить какой-то файл стороннего бандла. Будь то Twig-шаблон, контроллер или файл с переводом.

Если бандл, который вы кастомизируете имеет хоть сколь-нибудь сложную систему вложенности файлов, то их переопределение становится не очень занимательной задачей.

Например?

Показательным может быть e-commerce проект Sylius, в котором для переопределения, скажем, шаблона отображения продукта /vendor/sylius/sylius/src/Sylius/Bundle/WebBundle/Resources/views/Frontend/Product/show.html.twig придется создавать целую иерархию папок app/Resources/SyliusWebBundle/views/Frontend/Product вручную, чтобы в итоге положить туда файл show.html.twig.

Собственно, с целью автоматизации данной операции родился плагин для Sublime Text 3, которым я хочу поделиться с Symfony2-разработчиками.
Читать полностью »

Даная статья является продолжением «Переопределение реализации метода. Вдохновленный Java'ой». В предыдущей заметке было предложено слишком уж кривое решение, оставлять в таком виде не хотелось и было принято волевое решение довести свое начинание до логического завершения и сделать все «как надо». Хотя вопрос нужности такого функционала в Objective-C до сих пор открыт.

Итак, продолжаем быть похожими на Java
Анонимные классы в Objective C
Читать полностью »

Вступление

Изучая основы разработки под Android мне пришлось познакомится с таким замечательным языком, как Java. Читая очередной раздел гугловского GetStarted я наткнулся на такую конструкцию:

Button.OnClickListener mTakePicSOnClickListener = 
		new Button.OnClickListener() {
		@Override
		public void onClick(View v) {
			
		}
	};

Объявление представителя OnClickListener и переопределения у него метода onClick (поправьте меня Java программисты). Хм, подумал я, а круто бы эту фичу поиметь в Objective-C, а именно возможность переопределять реализацию метода у объекта(конкретного объекта, а не реализацию метода для всех объектов класса) да еще и через блоки в runtime (!) и забыл о этом всем… пока не оказался в полупустом автобусе в дождливую погоду. Времени было много и я решил поразмыслить над тем, что же тут можно сделать.
Зачем это нужно было? Изначально хотелось уметь делать так:

tableView1.delegate = [[NSObject new] override:@selector(tableView:didDeselectRowAtIndexPath:) imp:^void(NSIndexPath* ip){
       NSLog(@"selected row %i", ip.row);
}]
tableView2.delegate = [[NSObject new] override:@selector(tableView:didDeselectRowAtIndexPath:) imp:^void(NSIndexPath* ip){
       NSLog(@"selected row %i", ip.row);
}]

Обратите внимание, что предполагается изменение именно делегата и добавление/предопределение методов у него. А tableView остается оригинальным, без каких либо изменений.

Тем самым местом я чувствовал, что это вполне реализуемо благодаря богатому внутреннему миру Objective-C Runtime.
И да, то самое место меня не подвело.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js