![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Начал немного разбираться, пока пытаюсь понять логику построения языка.
1. Поддерживает ли PHP множественное наследование, если да то как? 2. Как объявить абстрактный метод? 3. Как перекрыть метод в родительском классе? 4. Как обратится к методу класса-предка? 5. Как определить события? 6. Как объявить свойство,работа с которым происходит через приватные методы? 7. Есть ли возможность работать с ссылками? 8. Процедура должна быть объявлена обязательно до места её использования или в любом месте? Если обязательно "до", то как сделать forward declaration. 9. Реализованные ли механизмы RTTI? Другими словами можно ли достучаться до дескрипторов типов, например есть класс A, я могу узнать есть ли у него метод B или нет? 10. Есть ли в PHP возможность удалённых вызовов? Прошу особо не пинать ногами, только сел за PHP - опыта никакого, пытаюсь просто понять как эта штука работает и как её применять... -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Sardar |
|
||||||||||||||||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
Нeт, но поддерживает интерфейсы как Java. Xотя не нужно подходить с жёсткими мерками к скриптовым языкам, то что делаеться громоздко в C#/Java, в PHP5 делаеться гораздо проще. Пишем магический метод __call - который будет перехватывать все вызовы не существующих методов, таким образом можно собрать любой динамический интерфейс. Переменные естественно могут в любой момент создасться новые.
Всё как в Java, пишем abstract function bla($arg, &$arg2, SomeClass $arg3, ...); Для переопределения также не требуються никакие ключевые слова, как и в Java.
Только обьект потомок может обратиться к parent::method, для внешнего мира никак.
А зачем они в PHP? В C# события - это лишь немного скрытой работы компилятора, создаються списки слушателей и т.д. В PHP также как и в Java, всё в ручную.
Есть магические __get и __set, через которые организуем работу с несуществующими полями, существующие публичные будут доступны на прямую. Также можно реализовать интерфейс ArrayAccess и получить возможность работать с обьектом как с массивом, передавая как числовые так и строковые ключи. Очень удобно.
Да, но ограниченно. Передавать по ссылке нельзя ибо не логично, интерпретатор будет выкидывать предупреждение(которое можно отключить). В методе можно обьявить параметр как ссылку, тогда получать будет ссылку, а не значение. Обьекты всегда передаються как ссылки, массивы не обьекты, передаються как копии.
PHP это интерпретируемый язык, ошибка будет в момент обращения к функции/методу. Если такой метод своевременно появиться, то всё будет работать. НО! это грязная практика, приводящая ИМXО к труднонаходимым ошибкам. Деклараций наперёд прототипов функций/методов нет.
Да. PHP это скриптовый язык, очень похож на Java, хотя даёт гораздо больше свободы из-за своей скриптовой сущсности.
Есть XML RPC/SOAP библиотеки. Идут как PECL расширения. Всё сказанное относиться к PHP5. При изучении главное помнить, что это скриптовый язык, т.е. можно создать функцию в любой момент(лямбда функция), сделать почти любые "магические" фичи(смотрим методы __* и нативные интерфейсы Zend 2), вообще свобода ограничиваеться лишь воображением, а не языком ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||||||||||||||||
|
|||||||||||||||||||
Vit |
|
||||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Т.е. передать массив как ссылку я не могу?
Ну а как реализуется что-то типа такого:
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||||
|
|||||||
Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Точно так, как ты написал.
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
Sardar |
|
||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
Повторяю - единственное ограничение это твоё воображение и желание пробовать ![]()
Дефолтные значения для ссылок - фича PHP5. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |