Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP, первые шаги... 
:(
    Опции темы
Vit
  Дата 16.9.2005, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL WWW ICQ   Вверх
Sardar
Дата 16.9.2005, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 4
Всего: 317



Цитата(Vit @ 16.9.2005, 15:06)
1. Поддерживает ли PHP множественное наследование, если да то как?

Нeт, но поддерживает интерфейсы как Java. Xотя не нужно подходить с жёсткими мерками к скриптовым языкам, то что делаеться громоздко в C#/Java, в PHP5 делаеться гораздо проще. Пишем магический метод __call - который будет перехватывать все вызовы не существующих методов, таким образом можно собрать любой динамический интерфейс. Переменные естественно могут в любой момент создасться новые.

Цитата(Vit @ 16.9.2005, 15:06)
2. Как объявить абстрактный метод?
3. Как перекрыть метод в родительском классе?

Всё как в Java, пишем abstract function bla($arg, &$arg2, SomeClass $arg3, ...);
Для переопределения также не требуються никакие ключевые слова, как и в Java.

Цитата(Vit @ 16.9.2005, 15:06)
4. Как обратится к методу класса-предка?

Только обьект потомок может обратиться к parent::method, для внешнего мира никак.

Цитата(Vit @ 16.9.2005, 15:06)
5. Как определить события?

А зачем они в PHP? В C# события - это лишь немного скрытой работы компилятора, создаються списки слушателей и т.д. В PHP также как и в Java, всё в ручную.

Цитата(Vit @ 16.9.2005, 15:06)
6. Как объявить свойство,работа с которым происходит через приватные методы?

Есть магические __get и __set, через которые организуем работу с несуществующими полями, существующие публичные будут доступны на прямую. Также можно реализовать интерфейс ArrayAccess и получить возможность работать с обьектом как с массивом, передавая как числовые так и строковые ключи. Очень удобно.

Цитата(Vit @ 16.9.2005, 15:06)
7. Есть ли возможность работать с ссылками?

Да, но ограниченно. Передавать по ссылке нельзя ибо не логично, интерпретатор будет выкидывать предупреждение(которое можно отключить). В методе можно обьявить параметр как ссылку, тогда получать будет ссылку, а не значение. Обьекты всегда передаються как ссылки, массивы не обьекты, передаються как копии.

Цитата(Vit @ 16.9.2005, 15:06)
8. Процедура должна быть объявлена обязательно до места её использования или в любом месте? Если обязательно "до", то как сделать forward declaration.

PHP это интерпретируемый язык, ошибка будет в момент обращения к функции/методу. Если такой метод своевременно появиться, то всё будет работать. НО! это грязная практика, приводящая ИМXО к труднонаходимым ошибкам. Деклараций наперёд прототипов функций/методов нет.

Цитата(Vit @ 16.9.2005, 15:06)
9. Реализованные ли механизмы RTTI? Другими словами можно ли достучаться до дескрипторов типов, например есть класс A, я могу узнать есть ли у него метод B или нет?

Да. PHP это скриптовый язык, очень похож на Java, хотя даёт гораздо больше свободы из-за своей скриптовой сущсности.

Цитата(Vit @ 16.9.2005, 15:06)
10. Есть ли в PHP возможность удалённых вызовов?

Есть XML RPC/SOAP библиотеки. Идут как PECL расширения.

Всё сказанное относиться к PHP5. При изучении главное помнить, что это скриптовый язык, т.е. можно создать функцию в любой момент(лямбда функция), сделать почти любые "магические" фичи(смотрим методы __* и нативные интерфейсы Zend 2), вообще свобода ограничиваеться лишь воображением, а не языком smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Vit
Дата 16.9.2005, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Цитата(Sardar @ 16.9.2005, 08:11)
Обьекты всегда передаються как ссылки, массивы не обьекты, передаються как копии.


Т.е. передать массив как ссылку я не могу?

Цитата(Sardar @ 16.9.2005, 08:11)
НО! это грязная практика, приводящая ИМXО к труднонаходимым ошибкам. Деклараций наперёд прототипов функций/методов нет.



Ну а как реализуется что-то типа такого:

Код

function a($чего-то там)
{
  //чего-то делаем
  b($чего-то там);
  //чего-то делаем
};

function b($чего-то там)
{
  //чего-то делаем
  a($чего-то там);
  //чего-то делаем
};



--------------------
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
PM MAIL WWW ICQ   Вверх
Mayk
Дата 16.9.2005, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



Цитата(Vit @ 17.9.2005, 00:22)

Ну а как реализуется что-то типа такого:

Точно так, как ты написал.
Код

function  a($s){
    print "a".$s."\n";
    if($s > 4) b($s-1);
}
function b($s){
    print "b".$s."\n";
    if($s > 4) a($s-1);

}
b(10);



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Sardar
Дата 16.9.2005, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 4
Всего: 317



Цитата(Vit @ 16.9.2005, 19:22)
Т.е. передать массив как ссылку я не могу?

Повторяю - единственное ограничение это твоё воображение и желание пробовать smile
Код
function test(&$by_link=array()) {
  $by_link[0]="after test";
}

$r=array("before test");
test($r);
print_r($r); //[0] after test

Дефолтные значения для ссылок - фича PHP5.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0824 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.