Переопределенные функции
Есть такое код:
Код:
<?php Когда я написал так: A::example(); Я просто через глобальную область видимости к классу вызывал ег о метод, это вроде понятно,но после вот этого: $b->example(); Вызывался метод из класса-потомка, а потом вызвался метод класса родителя после него, почему это так? Почему после этого $b->example();выводится 2 раза, а не один класса-потомка? |
Цитата:
причем делаете это неправильно. небходимо общатся через parent |
Golovastik мне что ли вам книгу по PHP купить?
|
потому что вы вызываете метод класса-предка. То есть написав вот так: $b->example(); Это значит вызвать и предка и потомка, так как функции с идентичными названиями? |
Golovastik,
вы что, совсем идиот? реально, купите себе какую-нибудь книгу по PHP и самое главное - читайте документацию. там все вполне понятно написано. сам читал ее, и точно вам говорю, что там все заданные вами вопросы уже описаны. Если не понимаете с первого раза, прочитайте еще раз соответствующий раздел справочника. попробуйте написать тестовый код, для проверки механизма, если возникают сомнения. Прежде чем задавать вопрос на форуме, повторить эту последовательность действий не менее 3х раз. Если к третьему разу у вас так и не получилось понять механизм, и получить ответ на свой вопрос самостоятельно, то значит, либо вопрос и вправду нестандартный(что навряд ли), либо вы полный идиот. Если вы зададите свой следующий вопрос, не потрудившись попытатся найти ответ самостоятельно, как я описал выше, то получите бан на 10 дней. Ответ на ваш последний вопрос: Цитата:
так как объект $b является представителе класса B, то метод example ищется у него. Так как он нашелся, то он и выполняется. Если бы он не нашелся, то искался бы метод example у родительского класса - A Итак, в вашем случае вызывается именно метод example, код которого описан в классе B по-умолчанию PHP в таком случае НЕ будет вызывать метод example, код которого описан в классе A но, вы вызываете его ПРИНУДИТЕЛЬНО, с помощью строки A::example(); которую кстати, правильно писать так: parent::example(); |
Часовой пояс GMT +3, время: 16:15. |