bash.org:

Следуй за мной:

twiby

Адовый чад кутежа и трэш в комплекте

Изменение модификаторов доступа при наследовании php

Пришло на ум: 22 апреля 2013


Довольно интересный вопрос задали сегодня на собеседовании

Необходимо выяснить, что сработает, а что повалится:

public    -> private
public    -> protected
protected -> private
protected -> public
private   -> public 
private   -> protected

Пример кода, php 5.4.13

class a {
	protected function foo(){
	
	}
}
class b extends a{
	private function foo(){
	
	}
}

$x = new b();
public    -> private - Fatal error: Access level to b::foo() must be public (as in class a) 
public    -> protected - Fatal error: Access level to b::foo() must be public (as in class a) 
protected -> private - Fatal error: Access level to b::foo() must be protected (as in class a) or weaker
protected -> public - OK
private   -> public - OK
private   -> protected - OK

Вывод : более слабые модификаторы можно назначить в классе-наследнике

Если мой пост помог вам сэкономить пару часов времени или показался полезным, думаю не лишним будет показать его друзьям через социальные сети или упомянуть в своем блоге.


Ваше мнение:

Имя
   другие статьи с тегом PHP

Случайная мысль:

Кредиторы отличаются лучшей памятью, чем должники.
Бенджамин Франклин
drcreazy © 2008-2012 all rights reserved