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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> объектное vs процедурное, программирование в PHP 
:(
    Опции темы
Opik
Дата 2.1.2007, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

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



Цитата(Mal Hack @  2.1.2007,  13:55 Найти цитируемый пост)
Opik, без обид, но статья ни о чем


Я не так не считаю, там на явном примере поясняется смысл.
Читайте тогда здесь: http://www.intuit.ru/department/se/tppobj/
PM MAIL Skype   Вверх
Eugene_Bond
Дата 2.1.2007, 22:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Что-то вроде этого..
Опять таки упрощенно и "на коленке" в блокноте написанное. Может и не запуститься

Код

<?php


    class db {        
        protected $host = 'localhost'; 
        protected $base = 'test'; 
        protected $port = 3306; 
        protected $user = 'root'; 
        protected $pass = ''; // ;-)
        
        // Hold an instance of the class
        private static $instance;
        
        private function __construct() {
            mysql_connect($this->host, $this->user, $this->pass) or die("Ошибка соединения с сервером");
            mysql_select_db($this->base) or die("Ошибка подключения базы");
        }
        
        public static function singleton() {
            if (!isset(self::$instance)) {
                $c = __CLASS__;
                self::$instance = new $c;
            }
            return self::$instance;
        }
        
        public function Exec($sql) {
            $result = mysql_query($sql);
            if (!$result) {
                trigger_error("Could not successfully run query ($sql) from DB: " . mysql_error(), E_USER_ERROR); // You can to throw exception if you like it more
                return false;
            }
            $res = array();
            if (mysql_num_rows($result) > 0) {
                while ($row = mysql_fetch_assoc($result)) {
                    $res[] = $row;
                }
            }
            return $res;
        }
    }
    
    class pageProcessor {
        
        private $db;
        private $pageId;
        
        private function __construct() {
            $this->db = db::singleton();
        }
        
        public function getContentText() {
            $sql = "SELECT * FROM table WHERE id='$id'";    // I think it's something like this here
            if (count($res = (array) $this->db->Exec($sql))) {
                return array_shift($res);
            } else {
                header("Location: http://".$_SERVER['HTTP_HOST']."/index.php?page=error&id=1");
                exit;
            }
        }
        
        public function getContentMenu() {
            $sql = "???";    // Some SQLfor menu
            if (count($res = (array) $this->db->Exec($sql))) {
                return $res;
            } else {
                header("Location: http://".$_SERVER['HTTP_HOST']."/index.php?page=error&id=1");
                exit;
            }
        }
    }
    
    
    $pageOne = new pageProcessor(18);    //This is page #18
    $pageTwo = new pageProcessor(69);    // This is page #69
    
    $pageOneMenu = $pageOne->getContentMenu();    // Menu for page #18
    $pageOneText = $pageOne->getContentText();    // Text for page #18


PM MAIL   Вверх
Mal Hack
Дата 2.1.2007, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Цитата(Opik @  2.1.2007,  22:26 Найти цитируемый пост)
Я не так не считаю, там на явном примере поясняется смысл.

Вот честно, перечитал еще раз... Уже зная что такое ООП не могу ну никак соединить этот пример с ООП. Да, отдалено суть показывает, но отдаленно. Но, ИМХО, конечно же.


Цитата(Opik @  2.1.2007,  22:26 Найти цитируемый пост)
Читайте тогда здесь: http://www.intuit.ru/department/se/tppobj/ 

ООП в PHP и в полностью событийном программировании, где объекты представлены не как информационные модели, а как реальные сущности (кнопки, менюшки) разные вещи. Объяснять ООП на визуалке это легко и понятно... ООП в PHP, к сожалению, объяснить тяжело...
Новичок не может увязать понятие объекта с какой-ть сущностью... Сам понимаешь, "на яблоках" всегда проще...

Цитата(Eugene_Bond @  2.1.2007,  22:32 Найти цитируемый пост)
Опять таки упрощенно и "на коленке" в блокноте написанное. Может и не запуститься

Тогда какого черта надо сюда это постить !!

Цитата(Eugene_Bond @  2.1.2007,  22:09 Найти цитируемый пост)
Скорее тем, что после такого примера кроме усложнения синтаксиса преимуществ не ощущается..

Почитай внимательнее о чем я с BuShaRt'ом дискутировал... Тоже самое и в твоем случае.


PM ICQ   Вверх
Eugene_Bond
Дата 2.1.2007, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Mal Hack @  2.1.2007,  22:57 Найти цитируемый пост)
Тогда какого черта надо сюда это постить !!

Многоуважаемый Мал Хак.
Грубите, пожалуйста, своей бабушке! Вы же модератор..



Цитата(Mal Hack @  2.1.2007,  22:57 Найти цитируемый пост)
Почитай внимательнее о чем я с BuShaRt'ом дискутировал...

Любые основы должны демонстрировать преимущества. Например уменьшение количества строк кода, функциональность и удобство в применении.
PM MAIL   Вверх
Mal Hack
Дата 2.1.2007, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Цитата(Eugene_Bond @  2.1.2007,  23:14 Найти цитируемый пост)
Многоуважаемый Мал Хак.
Грубите, пожалуйста, своей бабушке! Вы же модератор..

Я считаю неуважение к участникам форума выкладывать код, который: "Может и не запуститься".

Цитата(Eugene_Bond @  2.1.2007,  23:14 Найти цитируемый пост)
Любые основы должны демонстрировать преимущества. Например уменьшение количества строк кода, функциональность и удобство в применении. 


Цитата(Mal Hack @  2.1.2007,  16:12 Найти цитируемый пост)
Еще раз объясняю для тех кто на подлодке.
Ты будешь новичку показывать основы синтаксиса и применения ООП в PHP на модуле из 1000 строк? Нет.
Я говорю о том, как показать основы. Чтобы человек решил использовать ООП, он должен до этого дорасти, тобишь осознать ТЕОРЕТИЧЕСКИЕ аспекты ООП, а не код на 1000 строк. 


PM ICQ   Вверх
Eugene_Bond
Дата 3.1.2007, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Mal Hack @  2.1.2007,  23:18 Найти цитируемый пост)
Я считаю неуважение к участникам форума выкладывать код, который: "Может и не запуститься".

http://forum.vingrad.ru/index.php?showtopi...st&p=979753

Вопросов больше не имею
PM MAIL   Вверх
-=Ustas=-
Дата 3.1.2007, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

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



Gold Dragon, я тебе говорил за эту литературу, на мой взгляз неплохие труды в плане теории. Объектно-ориентированный анализ и проектирование. Потом можно заодно и Страуструпа почитать.

Это сообщение отредактировал(а) -=Ustas=- - 3.1.2007, 23:55


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
awers
Дата 4.1.2007, 03:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Вообще каждой цели свои методы.
Там где надо написать hello world я буду писать hello world
А там где пахнет модулем - class hello { functuion message(){print(__CLASS__.' world'); } }

Думаю так )
PM MAIL WWW ICQ Skype   Вверх
Gold Dragon
Дата 4.1.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Так, народ, я хоть и новичок, но создать class hello в состоянии. Меня больше интересует не элементарное использование, а именно то, что другими способами сделать труднее.



PS 
кстати, тему лучше переименовать с Философия class smile

Добавлено @ 10:44 

кстати, очень понравилась статья
http://vmk.ugatu.ac.ru/book/buch/index.htm

правда пока только начал читать



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
-=Ustas=-
Дата 4.1.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

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



Gold Dragon, потом как ты ознакомишься с теорией ООП, советую прочитать Обзор паттернов проектирования, чтобы ты имел представление где и как строить архитектуру классов и самого приложения ;)


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Mal Hack
Дата 4.1.2007, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Цитата(Gold Dragon @  4.1.2007,  10:40 Найти цитируемый пост)
Меня больше интересует не элементарное использование, а именно то, что другими способами сделать труднее.

Большая задача. Большое кол-во переменных. При структурном подходе ты был вынужден каждую через global подключать или через параметры передавать, а при объектом тебе достаточно ее один раз в конструкторе в свойство записать и затем с ним работать.
PM ICQ   Вверх
Gold Dragon
Дата 4.1.2007, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



вот! это уже интересно. Если честно, то для меня это уже стоновится проблемой.


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
nerezus
Дата 15.4.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



Цитата

Давай будем реалистами. Применительно к PHP, объекты все равно несут лишь информационную модель скрипта, событиыйности-то нету
 Как это нету? Когда нто лишь недостаток реализации определенной программы, в которой ее нету.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
CyClon
Дата 17.4.2007, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

Вообще, я смотрю ООП мало кому дается так легко smile Буквально год назад я вообще не понимал зачем это нужно, какой из этого толк и вообще "функции рулят". Когда перечитал несколько статей о ООП в PHP от разных авторов и понял основы, все равно не примеял его. Но постепенно начал сталкиваться с задачами и вспоминая основы ООП задумывалвася "А ведь это можно написать с использование классов, получится проще и красивее". Сейчас время от времени применяю.


--------------------
user posted image
PM   Вверх
-=Ustas=-
Дата 18.4.2007, 22:38 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

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



Цитата(CyClon @  17.4.2007,  21:34 Найти цитируемый пост)
Если хочется понять ООП в PHP - имхо нужно читать литературу по ООП, в которой все примеры демонстрируются на PHP, а не на других языках...

Ну тут ты в корне не прав, и я могу тебе это доказать и даже убедить тебя. ООП - это Объектно-Ориентированный Подход, а на каких языках - это уже по-барабану. Да, я согласен, в некоторых языках такая объектная модель, в других такая-то, но теоретическая основа везде аналогична, и ОБЪЕКТ он и в африке объект. Поэтому прежде - МАТ-чать!


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Избранное | Следующая тема »


 




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


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

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