Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Вызов конструктора базового класса
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Golovastik пишет:
На пхп застряло на 15 строке и не идёт:
В PHP концепции и элементы объектно-ориентированного программирования активно используются - однако его реализация не является такой полной как например в языке Java В частности в PHP для доступа к полям и функциям текущего класса можно использовать как конструкцию self::field так и $this->field - то есть класс и объект являющийся экземпляром класса не разделены в коде описания класса полностью Видимо такой синтаксис заимствован из C++ где его использование реально оправдано - что можно увидеть к примеру при просмотре генерируемого C-кода - поскольку свойства класса там на самом деле являются свойствами одноименной структуры а функции находятся отдельно от объекта с пространстве имен совпадающем с именем класса
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Golovastik
Отправлено: 03 Июля, 2010 - 11:41:46
Гость
Покинул форум
Сообщений всего: 89
Дата рег-ции: Июль 2010
"Автоматически вызвать функцию __construct родительского класса при создании обьекта этого класса"
JustUserR
Отправлено: 04 Июля, 2010 - 02:08:15
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Golovastik пишет:
Хоть вот эту строку и понял как использовать но не понял что означает вот это выражение.
Если вы используете PHP4-нотацию для записи конструктора в классе - то соответствующий вызов будет выглядеть как parent::Base()
Golovastik пишет:
Parent - это класс языка пхп как я понял.
__construct - это область видимости метода в этом классе?
В PHP для классов реализовано только единственное наследование - и parent означает просто доступ к функциям базового класса Что касается областей видимости то ситуация в PHP по этому вопросу складывается еще более интересная По умолчанию в PHP присутствует только глобальная и локальная область видимости причем глобальная область является межпакетной - и нет в наличии стандартных пакетных или именнованных пространств имен - но тем не менее имя класса и оператор расширения области видимости могут использоваться для эмуляции пространств имен - в частности с помощью пакета runkit можно добиться получения собственных динамических пространств имен
Если рассматривать синтаксис вызова методов внутри класса то можно заметить что он несколько необычен для PHP - и причиной этого является того что фукнции в PHP ранее не были объектами первого рода Дело в том что обычная переменная может быть или глобальной и тогда для получения к ней используется ключевое слово global - или локальной и в таком случае она существует внутри определенной фукнции по правилу перекрытия В то же время все функции первоначально находились в глобальной области - и поэтому могут вызываться из нее без всяких ключевых слов - но с появлением классов потребовалась необходимость обращаться к его функциям определенным образом - и так как синтаксис простого вызова уже был занят глобальными функциями то для этой цели стали использовать оператор расширения области видимости по имени классу Казалось бы что с переменными находящимися внутри класса такой проблемы не было и их можно было бы использовать без всякого префикса - однако они используются фактически не внутри класса а внутри его методов которые сами могут содержать локальные переменные - и по этой причине а также для логического объединения свойств и методов класса стал использоваться такой синтаксис То есть по сути класс можно рассматривать как набор переменных и функций внутри определенного пространства имен - которое существует наряду с глобальным пространством и подчиняется таким же правилам
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.