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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Парадигма ООП в PHP. Как поживают инклюды? 
:(
    Опции темы
p0zt3r
Дата 2.7.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 6



icewind, 
Цитата

иначе как ты сделаешь так, чтоб твои файлы не скачивали и смотрели через веб? .htacces? а если он запрещен? Если вообще сервер не apache?


говорю же, инклюды делаешь .inc, а права на них прописываешь что-то вроде 750.

Inc не должен запускаться и выполняться. В нём не может быть запускного кода по идее, если логически правильно кодить

Добавлено через 2 минуты и 7 секунд
ksnk, вот и я о том же. Для этого конечно, можно и мусор писать в каждом файле. А можно по-нормальному права прописывать и структурировать директории.
--------------------
24*7*365*геморой*зарплата=0
PM MAIL ICQ   Вверх
icewind
Дата 2.7.2009, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

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



Цитата(ksnk @  2.7.2009,  15:42 Найти цитируемый пост)
icewind,  smile  А что будет, если я, к примеру, описал класс Auth с секретными паролями в файле Auth.php и злой хакер открыл его в своем броузере по адресу http://site.ru/plugins/auth.php? 

он увидит надпись Restricted access. потому что
Код
    
defined( '_JEXEC' ) or die( 'Restricted access' );


А если на все файлы права выставлять по 600 то пофиг какое у него расширение. К чему тогда этот вопрос?


--------------------
user posted image
PM MAIL Skype   Вверх
p0zt3r
Дата 2.7.2009, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 6



В тему топика.

В одной хорошей книжке по PHP 5 есть бестолковый пример:

Код

class Circle
{
  function draw () { echo "круг";}
}

class Square
{
 function draw () { echo "квадрат";
}

function ShapeFactoryMethod ($shape)
{
switch ($shape)
{
case "Circle": return new Circle ();
case "Square":  return new Square ();
}
}

ShapeFactoryMethod ("Circle")->draw ();
ShapeFactoryMethod ("Square")->draw ();


Конечно, в соответствии с парадигмой ООП, эта задача должна быть разрешена так:
Код

abstract class IDrawableShape
{
abstract public function draw ();
}

class Circle implements IDrawableShape {...}
class Square implements IDrawableShape {...}
...
class SomeNewUserShape implements IDrawableShape {...}


Но есть одно НО.  В компилируемых языках программирования, интерфейсы появились для того, чтобы сторонний программист мог не зная реализации пользовался классом, скомпилированным другим разработчиком. В сущности, интерфейс (в том числе и COM/ActiveX) это всего лишь таблица функций и свойств, которая аналогична таблице функций в DLL и SO-файлах и представляет собой метаданные какой-либо модели предметной области. Прежде всего, нужно обратить внимание, что это особенность компилируемых языков,  в которых нужно сделать классу условно говроря "фасад" для стороннего разработчика.

В PHP же, неважно как наследуется класс и по сути само наследование, его роль в PHP, размыта, поэтому два приведенных кода вверху семантически равнозначны. 
Т.е. наличие у класса того или иного метода определяется интерпретатором динамически. Такая же особенность есть и в JS. А вот в AS, например, при генерации компилированного SWF, интерпретатор(компилятор?) анализирует ООП-модель на наличие в ней реализаций методов.

Ну и как здесь быть? Если у класса был описан метод draw() и программист к нему обратился, ему не важен абстрактный класс IDrawableShape. И что по этому поводу может сказать PHP Manual? Да ничего! Делай, как хочешь. Так где же, собственно, стиль PHP?

Добавлено через 3 минуты и 39 секунд
icewind, ещё нюанс, в Apache есть AddType application/x-httpd-php .php
Для .inc файлов этого можно не указать (как и делается по умолчанию), в результате чего, inc файлы перестают быть интерпретированными из прямого HTTP-запроса. И права доступа тут не при чём.
--------------------
24*7*365*геморой*зарплата=0
PM MAIL ICQ   Вверх
SamDark
Дата 2.7.2009, 16:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


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

Репутация: 10
Всего: 38



icewind, 
ksnk, 
p0zt3r, 
А кто вообще сказал, что в доступной извне директории должно лежать что-либо кроме статики и index.php?

p0zt3r, 
Цитата

Я говорю о стиле. Вот drupal и wordpress это чисто функциональный стиль. Но является ли это общепринятым, доступным, удобным для PHP-кодеров? Если я делаю расширяемое приложение,
стоит ли придерживаться этого быдлокодинга? Удобен ли он вам?

Не функциональный, а процедурный. Процедурный стиль != быдлокодинг. Быдлокодинг — это нечто не из этой оперы вообще.

Цитата

Цель моей работы - создать CMS для интеллектуализированных сервисов (семантический поиск, ранжирование и кластеризация данных), которая в дальнейшем будет решать задачи "семантической паутины" и поддерживать на данном этапе парадигму Веб 2.0.

Может ограничиться хорошим набором классов для начала?
Что такое «парадигма Веб 2.0»? smile


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
p0zt3r
Дата 2.7.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 6



SamDark, в доступной извне директории у меня лежит index.php, код которого я привёл выше. smile Ну и корневой .htaccess, в котором с помощью mod_rewrite и mod_redirect производится маппинг URI на физический index.php - так реализуются пермалинки и индекс.пхп понимает какую страницу ему надо показать.

Не процедурный, а структурный, если уж на то пошло. А что такое быдлокодинг?

парадигма Web 2.0  smile 

Семантическая паутина. "Web 3.0"

Добавлено @ 16:37
А что такое "хороший набор классов"? Хороший набор классов появляется на стадии проектирования smile сейчас я реализации пишу по-тихоньку. Это самое объёмное, ибо надо написать типовые модули вроде "корп.сайт", "блог", "магазин".

Добавлено @ 16:38
да! и ещё клиентский фреймворк кодить надо. это вообще ацкий геморой будет.

Добавлено @ 16:40
Да. И какая вообще статика? Покажите мне хоть один вебдванольный сайт, в котором есть хоть одна статическая страница! Статики вообще не должно быть, т.к. она подмножество динамического контента, выражаясь философски smile

Добавлено @ 16:44
Моё видение Веб 2.0:
  • связываемость сервисов и Rich Internet Apps, SaaS
  • метаданные страниц
  • социальные сети, социальный Интернет
  • клиентский AJAX-фронтэнд
  • доступность для людей с ограниченными возможностями
  • многоязычность
  • подстраиваемость системы под посетителя
  • возможности WebDAV
  • векторная программная графика и все формы XHTML


Это сообщение отредактировал(а) p0zt3r - 2.7.2009, 16:45
--------------------
24*7*365*геморой*зарплата=0
PM MAIL ICQ   Вверх
SamDark
Дата 2.7.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


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

Репутация: 10
Всего: 38



p0zt3r, 
Так зачем был вопрос про расширения, если по-хорошему наружу и так ничего не торчит?

Цитата
А что такое быдлокодинг?

Бездумное написание кода «лишь бы работало». Очень и очень отличается от грамотного кода в любом стиле. Как правило такой код не может быть использовать повторно или дописан достаточно быстро.

Цитата
И какая вообще статика? Покажите мне хоть один вебдванольный сайт, в котором есть хоть одна статическая страница! Статики вообще не должно быть, т.к. она подмножество динамического контента, выражаясь философски 

Статика = CSS, JS, картинки, файлы.

Цитата
Моё видение Веб 2.0

Вот это уже хорошо. Советую не употреблять слова «Веб 2.0». Пошло звучит ;)


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
ksnk
Дата 2.7.2009, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Я вообще-то хотел сказать, что если в файле Auth.php описан только класс, и никакого вызова его нет (как, я надеюсь, и принято писать), то умный хакер все равно ничего не увидит, есть там die('restricted access') или просто ничего нет.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
p0zt3r
Дата 2.7.2009, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 6



SamDark, ну и CSS и картинки это не статика нифига. Скажем есть у тебя две версии сайта - одна в разработке, другая рабочая. Или версия сайта для слепых и версия сайта для тупых - можно конечно на клиент выгружать все эти варианты CSS и картинок и прочего "статического" контента, а можно выдавать скриптом. Производительность здесь не теряется, браузеры всё равно кэшируют эти страницы, появляется возможность учёта траффика сервера на уровне скрипта. Но всё это, я согласен, неубедительно.

С JS таже тема. Создал ты новую версию фреймворка и чё теперь? заменять файлы на сервере?

Ну если ты об этом. А ты работал когда-нибудь в крупной фирме, где кретин-менеджер, кретин-заказчик и кретин-проектировщик? И все тебя имеют за сроки? smile и не такие "стили программирования" могут появиться smile

SamDark, Веб 2.0 звучит вполне приемлимо. И моё видение это видение не моё.


ksnk, так или иначе обращение к Auth.php должно вызывать 403, а не пиз--ж CMS о restricted access. Есть стандарты, есть правила, так надо каким-то уродцам делать исключения вечно. А если я хочу, чтобы у меня картинка красивая показывалась при открытии напрямую "секретных" файлов? Мне чё, надо во всем этом joomla-кале исправлять указанную строку? Это уже и называется быдлокодинг - лишьбыкак!
--------------------
24*7*365*геморой*зарплата=0
PM MAIL ICQ   Вверх
youri
Дата 2.7.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(p0zt3r @  2.7.2009,  17:43 Найти цитируемый пост)
ну и CSS и картинки это не статика нифига

не надо делать таких громких заявлений, если у тебя все генерируется динамически, это не значит, что у всех должно быть так
Цитата(p0zt3r @  2.7.2009,  17:43 Найти цитируемый пост)
Производительность здесь не теряется

проверял?
Цитата(p0zt3r @  2.7.2009,  17:43 Найти цитируемый пост)
Создал ты новую версию фреймворка и чё теперь? заменять файлы на сервере?

почему нет?
Цитата(SamDark @  2.7.2009,  17:24 Найти цитируемый пост)
Советую не употреблять слова «Веб 2.0». Пошло звучит ;)

+1
Цитата(p0zt3r @  2.7.2009,  17:43 Найти цитируемый пост)
так или иначе обращение к Auth.php должно вызывать 403, а не пиз--ж CMS о restricted access

кому должно? Сначала подумай, как туда браузер попасть может
Цитата(p0zt3r @  2.7.2009,  17:43 Найти цитируемый пост)
Есть стандарты, есть правила, так надо каким-то уродцам делать исключения вечно

Есть такая штука как "здравый смысл", так надо каким-то уродцам с ортодоксальными взглядами проповедовать свою единственно правильную точку зрения
Цитата(p0zt3r @  2.7.2009,  17:43 Найти цитируемый пост)
А если я хочу, чтобы у меня картинка красивая показывалась при открытии напрямую "секретных" файлов? Мне чё, надо во всем этом joomla-кале исправлять указанную строку?

нельзя создать систему, рассчитанную на любое изменение
PM   Вверх
p0zt3r
Дата 2.7.2009, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 6



Цитата(youri @  2.7.2009,  18:02 Найти цитируемый пост)
проверял?

 smile 

Цитата(youri @  2.7.2009,  18:02 Найти цитируемый пост)
нельзя создать систему, рассчитанную на любое изменение

зачем тогда вообще создавать системы? чтобы плодить новых традиционалистов, только которые вообще не придерживаются никаких стандартов - не прошлых, не вымышленных?

Цитата(youri @  2.7.2009,  18:02 Найти цитируемый пост)
Сначала подумай, как туда браузер попасть может

неправильно набранный вручную пермалинк

Цитата(youri @  2.7.2009,  18:02 Найти цитируемый пост)
Есть такая штука как "здравый смысл"

Если бы всё держалось на "здравом смысле", Интернета вообще бы не было. Был бы только HTML 2.0 и сайт 1994

Вывод по топику
У PHP нет своего стиля. Это всего лишь один язык из семейства Perl-подобных серверных языков. Исторически, PHP пришёл взамен Perl'а только из-за того, что содержал удобный фреймворк для работы с HTTP-аттрибутами, сессиями, сокетами, sendmail и др. и для рядового кодера представлял собой адаптацию Perl'а к задачам WWW. Переход к PHP многих разработчиков вернул в языки со строгим синтаксисом, в тоже время создав возможности для быстрой разработки веб-сайтов.

Стиль быдлокодинга насаждается создателями самого PHP, как мы можем убедится из их официального сайта здесь.

На данный момент PHP 5 Manual разъясняет только технические аспекты языка программирования PHP, предоставляя программисту самому создать свой стиль программирования на нём.

Я считаю, что в эпоху RAD, создание приложений должно производится с помощью CASE-технологий, следовательно правильный и адекватный стиль программирования на PHP это использование всех доступных возможностей ООП-парадигмы, которая, к сожалению, не полностью реализуема на этом языке. Этот стиль подразумевает взвешенное использование динамических возможностей языка, в том числе и лямбда-функций, с оглядкой на безопасность. Кроме того, создание и поддержка сайта включает в себя не только разработку серверных сценариев, в общем случае которые представляют собой сценарии обработки HTTP и SQL запросов, но и правильную конфигурации WWW-сервера (IIS, Apache). К сожалению, PHP на Apache реализуется в виде mod'а. API Apache'а очень просто и не позволяет на уровне серверного сценария управлять дочерними процессами сервера, что обусловлено опять же не только архитектурой Apache (которая, в общем-то, сполна выполняет свои обязанности), но  и требованиями безопасностями.

Мне нравится PHP из-за синтаксиса, простоты в использовании, скорости работы и времени разработки. Существуют готовые решения, куча документации.
Вцелом, PHP это круто!




Это сообщение отредактировал(а) p0zt3r - 2.7.2009, 18:59
--------------------
24*7*365*геморой*зарплата=0
PM MAIL ICQ   Вверх
SamDark
Дата 2.7.2009, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


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

Репутация: 10
Всего: 38



Цитата
Ну если ты об этом. А ты работал когда-нибудь в крупной фирме, где кретин-менеджер, кретин-заказчик и кретин-проектировщик? И все тебя имеют за сроки?  и не такие "стили программирования" могут появиться 

Предпочитаю таких мест избегать.

Цитата
С JS таже тема. Создал ты новую версию фреймворка и чё теперь? заменять файлы на сервере?

Да.

Цитата
проверял?

Я проверял. Отдача через php не быстра.

Цитата
зачем тогда вообще создавать системы? чтобы плодить новых традиционалистов, только которые вообще не придерживаются никаких стандартов - не прошлых, не вымышленных?

Стандарты и изменения как-бы два разных совсем понятия…

Цитата
неправильно набранный вручную пермалинк

А какого чёрта что-то кроме index.php и картинок/CSS/JS доступно извне?

Цитата
Стиль быдлокодинга насаждается создателями самого PHP, как мы можем убедится из их официального сайта здесь.

Не там смотрим: http://framework.zend.com/

Цитата
ООП-парадигмы, которая, к сожалению, не полностью реализуема на этом языке.

Я что-то пропустил?

Цитата
К сожалению, PHP на Apache реализуется в виде mod'а.

А также CGI… и вообще, кто заставляет Apache использовать?

Цитата
не позволяет на уровне серверного сценария управлять дочерними процессами сервера

Хотите сказать, что процесс запустить из PHP нельзя?


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
youri
Дата 2.7.2009, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(p0zt3r @  2.7.2009,  18:57 Найти цитируемый пост)
зачем тогда вообще создавать системы? чтобы плодить новых традиционалистов, только которые вообще не придерживаются никаких стандартов - не прошлых, не вымышленных?

система, рассчитанная на любое изменение - идеал, для ее создания нужно бесконечное количество времени. Выдача картинки для "секретных" файлов - хз зачем нужно

Цитата(p0zt3r @  2.7.2009,  18:57 Найти цитируемый пост)
неправильно набранный вручную пермалинк

при некоторых архитектурах может и так. Но если пользователь вручную набирает URL, то он не испугается надписи Restricted access

Цитата(p0zt3r @  2.7.2009,  18:57 Найти цитируемый пост)
Если бы всё держалось на "здравом смысле", Интернета вообще бы не было. Был бы только HTML 2.0 и сайт 1994

обоснуй

Цитата(p0zt3r @  2.7.2009,  18:57 Найти цитируемый пост)
У PHP нет своего стиля

это и плюс и минус. Главное чтобы стиль был, а какой - не так важно

Цитата(p0zt3r @  2.7.2009,  18:57 Найти цитируемый пост)
Это всего лишь один язык из семейства Perl-подобных серверных языков. Исторически, PHP пришёл взамен Perl'а только из-за того, что содержал удобный фреймворк для работы с HTTP-аттрибутами, сессиями, сокетами, sendmail и др. и для рядового кодера представлял собой адаптацию Perl'а к задачам WWW. Переход к PHP многих разработчиков вернул в языки со строгим синтаксисом, в тоже время создав возможности для быстрой разработки веб-сайтов.

Lerdorf initially created these Personal Home Page Tools to replace a small set of Perl scripts he had been using to maintain his personal homepage
php был ориентирован на создание сайтов
Переход к PHP многих разработчиков вернул в языки со строгим простым синтаксисом

Цитата

Стиль быдлокодинга насаждается создателями самого PHP, как мы можем убедится из их официального сайта здесь.

затрудняюсь с комментариями. Возможно для их сайта такой стиль приемлем. Но я бы не рискнул назвать это быдлокодингом

Цитата(p0zt3r @  2.7.2009,  18:57 Найти цитируемый пост)
Я считаю, что в эпоху RAD, создание приложений должно производится с помощью CASE-технологий

каких CASE-технологий не хватает php?

Цитата(p0zt3r @  2.7.2009,  18:57 Найти цитируемый пост)
использование всех доступных возможностей ООП-парадигмы, которая, к сожалению, не полностью реализуема на этом языке

вам шашечки или ехать нужно?

Цитата

правильный и адекватный стиль программирования на PHP это использование всех доступных возможностей ООП-парадигмы, которая, к сожалению, не полностью реализуема на этом языке

так что ли?
http://www.phppatterns.com/docs/design/hel...rld_in_patterns

анонимные функции, кстати, появились в php-5.3.0

Цитата

API Apache'а очень просто и не позволяет на уровне серверного сценария управлять дочерними процессами сервера

чего тебе не хватает?
PM   Вверх
Sentox
Дата 2.7.2009, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


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

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



Цитата

В тему топика.

В одной хорошей книжке по PHP 5 есть бестолковый пример:

Код

class Circle
{
  function draw () { echo "круг";}
}

class Square
{
 function draw () { echo "квадрат";
}

function ShapeFactoryMethod ($shape)
{
switch ($shape)
{
case "Circle": return new Circle ();
case "Square":  return new Square ();
}
}

ShapeFactoryMethod ("Circle")->draw ();
ShapeFactoryMethod ("Square")->draw ();


Конечно, в соответствии с парадигмой ООП, эта задача должна быть разрешена так:
Код

abstract class IDrawableShape
{
abstract public function draw ();
}

class Circle implements IDrawableShape {...}
class Square implements IDrawableShape {...}
...
class SomeNewUserShape implements IDrawableShape {...}


Но есть одно НО.  В компилируемых языках программирования, интерфейсы появились для того, чтобы сторонний программист мог не зная реализации пользовался классом, скомпилированным другим разработчиком. В сущности, интерфейс (в том числе и COM/ActiveX) это всего лишь таблица функций и свойств, которая аналогична таблице функций в DLL и SO-файлах и представляет собой метаданные какой-либо модели предметной области. Прежде всего, нужно обратить внимание, что это особенность компилируемых языков,  в которых нужно сделать классу условно говроря "фасад" для стороннего разработчика.

В PHP же, неважно как наследуется класс и по сути само наследование, его роль в PHP, размыта, поэтому два приведенных кода вверху семантически равнозначны. 
Т.е. наличие у класса того или иного метода определяется интерпретатором динамически. Такая же особенность есть и в JS. А вот в AS, например, при генерации компилированного SWF, интерпретатор(компилятор?) анализирует ООП-модель на наличие в ней реализаций методов.

Ну и как здесь быть? Если у класса был описан метод draw() и программист к нему обратился, ему не важен абстрактный класс IDrawableShape. И что по этому поводу может сказать PHP Manual? Да ничего! Делай, к


Вот уж странно, во первых абстрактный класс не имплементируется, а во вторых интерфейсы и то что красным выделено относится и к PHP.
Судя по всему Вы даже не описали интерфейса для абстрактного класса, почему и спутали интерфейсы с абстрактными классами.

Цитата

интерпретатор(компилятор?) анализирует ООП-модель на наличие в ней реализаций методов.

Ещё страннее что PHP то же самое делает особенно когда описан интерфейс для классов.

Это сообщение отредактировал(а) Sentox - 2.7.2009, 22:20
PM MAIL   Вверх
p0zt3r
Дата 2.7.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 6



Цитата(Sentox @  2.7.2009,  22:19 Найти цитируемый пост)
Вот уж странно, во первых абстрактный класс не имплементируется

а что он делает?  smile 

Цитата(Sentox @  2.7.2009,  22:19 Найти цитируемый пост)
Судя по всему Вы даже не описали интерфейса для абстрактного класса, почему и спутали интерфейсы с абстрактными классами.

упс smile напартачил. Однако, не вижу принципиальной разницей между интерфейсом и абстрактным классом в данном контексте. extends вместо implements, конечно.

Что-то я реально нагнал тут воды какой-то. Прочитал топик http://forum.vingrad.ru/forum/topic-71335.html и всё проросло само собой.

Просто не надо было путать тёплое с мягким.

И всё же зачем нужен интерфейс в PHP? в указанном топике, один из авторов говорит, что для удобства программирования. я тоже так считаю, и об этом указал в своём посте про интерфейсы  в компилируемых языках.
--------------------
24*7*365*геморой*зарплата=0
PM MAIL ICQ   Вверх
Sentox
Дата 2.7.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


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

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



Да я сам нередко поднимал эти вопросы по началу, насчёт интерфейсов.
Честно говоря многие мало понимают мощности интерфейсов.
Вы правильно говорили 
Цитата

 В компилируемых языках программирования, интерфейсы появились для того, чтобы сторонний программист мог не зная реализации пользовался классом, скомпилированным другим разработчиком. В сущности, интерфейс (в том числе и COM/ActiveX) это всего лишь таблица функций и свойств, которая аналогична таблице функций в DLL и SO-файлах и представляет собой метаданные какой-либо модели предметной области. Прежде всего, нужно обратить внимание, что это особенность компилируемых языков,  в которых нужно сделать классу условно говроря "фасад" для стороннего разработчика.


Особенно обеспечить парадигму ООП.Например как в С++ надо обязательно типизировать передаваемые аргументы так и здесь:
Код

<?
function draw(IDrawableShape $class)
{
    ......
}
?>

Это обеспечит правильность функционирования допустим метода.

Это сообщение отредактировал(а) Sentox - 2.7.2009, 22:44
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Закрытая темаСоздание новой темы Создание опроса
Правила форума "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.0835 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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