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 :: ООП пытаюсь писать

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (5): [1] 2 3 4 5 »   

> Описание: Посмотрите, это ООП или ГК...?
Hapson
Отправлено: 24 Июля, 2013 - 23:40:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


Ну вот очередные мои потуги понять ООП и начать-таки писать блог именно на ООП. Уже начал писать на функциях, но все же хочу ООП.
Вот небольшой набросок, как оно примерно будет (будет ли...)
Это похоже на ООП?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // это файл типа config.php
  3. define('DB_SERVER', 'localhost');
  4. define('DB_LOGIN', 'root');
  5. define('DB_PASSWORD', 'password');
  6. define('DB_NAME', 'myuser');
  7.  
  8. //классы будут каждый в отдельном файле + будет файлик с __autoload()
  9. class DB{
  10.         private $id_connect;
  11.         private static $db = NULL;
  12.        
  13.         static function getDB(){
  14.                 if(self::$db == NULL){
  15.                         self::$db = new DB();
  16.                 }
  17.                 return self::$db;
  18.         }
  19.         private function __construct(){
  20.                 $this->id_connect = new mysqli(DB_SERVER, DB_LOGIN, DB_PASSWORD, DB_NAME);
  21.                 $this->id_connect->query("SET lc_time_names = 'ru_RU'");
  22.                 $this->id_connect->set_charset("utf8");
  23.         }
  24.         function select($sql){
  25.                 $query = $this->id_connect->query($sql);
  26.                 $result = mysqli_fetch_all($query);
  27.                 return $result;
  28.         }
  29.         function insert($sql){
  30.                 $query = $this->id_connect->query($sql);
  31.                 $result = $this->id_connect->affected_rows;
  32.                 return $result;
  33.         }
  34.         public function __destruct() {
  35.                 if ($this->id_connect) $this->id_connect->close();
  36.         }
  37. }
  38. class Users{
  39.         public $name;
  40.         public $password;
  41.        
  42.         function __construct($name, $password){
  43.                 $this->name = $name;
  44.                 $this->password = $password;
  45.         }
  46.         function register(){
  47.                 $db = DB::getDB();
  48.                 $result = $db->insert("INSERT INTO user (name, password) VALUES ('$this->name', '$this->password')");
  49.                 return $result;
  50.         }
  51.         function get_info($col, $table){
  52.                 $db = DB::getDB();
  53.                 $result = $db->select("SELECT $col FROM $table");
  54.                 return $result;
  55.         }
  56. }
  57. class Articles{
  58.         public $article;
  59.         public $title;
  60.         public $description = '';
  61.         public $keywords = '';
  62.        
  63.         function __construct($article, $title, $description, $keywords){
  64.                 /*
  65.                 ** здесь данные пойдут в class Cleaner{} наверное, и вернутся безопасными для вставки
  66.                 */
  67.                 $this->article = $article;
  68.                 $this->title = $title;
  69.                 $this->description = $description;
  70.                 $this->keywords = $keywords;
  71.         }
  72.         function save(){
  73.                 $db = DB::getDB();
  74.                 $result = $db->insert("INSERT INTO articles (article, title, description, keywords) VALUES ('$this->article', '$this->title, $this->description, $this->keywords')");
  75.                 return $result;
  76.         }
  77.         function show(){
  78.                 $db = DB::getDB();
  79.                 $result = $db->select("SELECT $col FROM $table");
  80.                 return $result;
  81.         }
  82. }
  83. $user = new Users('Вася', 'Пароль');
  84. var_dump($user->register());//число вставленных строк
  85. $user_info = $user->get_info('name, password', 'user');
  86. echo "<pre>";
  87. var_dump($user_info);//двумерный массив юзеров
  88. echo "</pre>";
  89. ?>


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
esterio
Отправлено: 25 Июля, 2013 - 00:00:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




читаем что такое "инкапсуляция"
 
 Top
Hapson
Отправлено: 25 Июля, 2013 - 00:18:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


esterio пишет:
читаем что такое "инкапсуляция"

Читал.
Как я понял, это когда мне грубо говоря по боку, что делается внутри класса.
Но что-то я не очень это понимаю...
Что здесь не так?
(Добавление)
esterio пишет:
читаем что такое "инкапсуляция"

Или вы имеете ввиду, что здесь нет обработки ошибок. И свойства public? И наверное нет абстрактных классов и интерфейсов?
Я так понимаю, свойства должны быть private, а методы public? Ну и плюс отлов ошибок, запись их в лог и информирование пользователей в удобной форме?


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
DeepVarvar Супермодератор
Отправлено: 25 Июля, 2013 - 00:32:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Hapson пишет:
это когда мне грубо говоря по боку
Ты не так понял, верный ответ звучит как: Это когда классу по боку что происходит снаружи, потому, что его внутренности не доступны извне и поэтому ему никто не навредит.
(Добавление)
Hapson пишет:
свойства должны быть private, а методы public?
Вообще не обязательно именно так.
Надо четко представлять что приват а что паблик, например если метод "сходить в туалет" сделать публичным, ничего хорошего из этого не получится..
 
 Top
Hapson
Отправлено: 25 Июля, 2013 - 00:41:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


DeepVarvar пишет:
Hapson пишет:
это когда мне грубо говоря по боку
Ты не так понял, верный ответ звучит как: Это когда классу по боку что происходит снаружи, потому, что его внутренности не доступны извне и поэтому ему никто не навредит.
(Добавление)
Hapson пишет:
свойства должны быть private, а методы public?
Вообще не обязательно именно так.
Надо четко представлять что приват а что паблик, например если метод "сходить в туалет" сделать публичным, ничего хорошего из этого не получится..

Ну да)))
Ну вот в данном, упрощенном примере. К примеру, в классе Users свойства будут приват (они мне в принципе и не нужны в виде паблик), а методы регистрации, аутентификации, изменения профиля и тд - это все паблик.


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
soffrick
Отправлено: 25 Июля, 2013 - 08:39:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


Помог: 17 раз(а)




Hapson пишет:
регистрации, аутентификации, изменения профиля и тд - это все паблик.

+отдельные методы проверки - приват


-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
EuGen Администратор
Отправлено: 25 Июля, 2013 - 09:20:38
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Hapson пишет:
Это похоже на ООП?

Нет.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Hapson
Отправлено: 25 Июля, 2013 - 14:23:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


EuGen пишет:
Hapson пишет:
Это похоже на ООП?

Нет.

Содержательно


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
soffrick
Отправлено: 25 Июля, 2013 - 14:26:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


Помог: 17 раз(а)




Hapson
прежде чем писать ооп что читал?


-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
Hapson
Отправлено: 25 Июля, 2013 - 14:29:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


soffrick пишет:
Hapson
прежде чем писать ооп что читал?

Котерова читал и смотрел все курсы Специалист.
(Добавление)
EuGen
А как оно должно быть? Что не так у меня?
Юзеры, статьи, БД... - это ведь сущности.


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
EuGen Администратор
Отправлено: 25 Июля, 2013 - 14:46:58
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Hapson
Ваш вопрос был односложен, следовательно, на него может быть дан только односложный ответ.
Hapson пишет:
А как оно должно быть? Что не так у меня?

- это уже другой вопрос, ответ на который многие годы пытаются дать различные специалисты. Я могу сказать лишь то, что нельзя понять объектный подход, пытаясь рассматривать лишь реализацию. ООП - это подход, парадигма. Иными словами, это набор постулатов и правил, и каждый конкретный язык программирования по-своему их реализует. Каждый программист по-своему реализует в коде этот подход. В зависимости от того, следует ли код принципам ООП, он может быть назван "код, использующий объектный подход" - либо нет.
Поэтому, резюмируя - следует изучать не только реализацию, а так же и сами принципы ООП, поскольку это - идея, теоретическая установка. Как лучше её реализовать - вопрос трудный, ответ на него приходит с опытом.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Hapson
Отправлено: 25 Июля, 2013 - 14:52:50
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


EuGen пишет:
Hapson
Ваш вопрос был односложен, следовательно, на него может быть дан только односложный ответ.
Hapson пишет:
А как оно должно быть? Что не так у меня?

- это уже другой вопрос, ответ на который многие годы пытаются дать различные специалисты. Я могу сказать лишь то, что нельзя понять объектный подход, пытаясь рассматривать лишь реализацию. ООП - это подход, парадигма. Иными словами, это набор постулатов и правил, и каждый конкретный язык программирования по-своему их реализует. Каждый программист по-своему реализует в коде этот подход. В зависимости от того, следует ли код принципам ООП, он может быть назван "код, использующий объектный подход" - либо нет.
Поэтому, резюмируя - следует изучать не только реализацию, а так же и сами принципы ООП, поскольку это - идея, теоретическая установка. Как лучше её реализовать - вопрос трудный, ответ на него приходит с опытом.

Понятно.
Ну так с чего-то начинать ведь нужно. Как можно понять, если не делать. Ну вот я вижу это пока вот так. Можно сказать с точки зрения реализации.
Для начала ведь пойдет так. Потом думаю пойму, что не так и как сделать лучше.
Ну что еще можно придумать для блога? Это будет просто блог. Будут категории, статьи, комментарии. Ну и пользователи.


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
caballero
Отправлено: 25 Июля, 2013 - 15:31:51
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Цитата:
А как оно должно быть? Что не так у меня?
Юзеры, статьи, БД... - это ведь сущности.


БД - не сущность.
ООП это способ мышления преджде всего. В том числе и понимани где сущность а где нет.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Hapson
Отправлено: 25 Июля, 2013 - 15:58:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


caballero пишет:
БД - не сущность.

Ну в прямом смысле да - это не сущность. Но ведь это объект программы, который работает независимо от кода php. Через php мы только взаимодействуем с этим объектом.
БД - это другая программа, это в конце концов файлы с данными на физическом диске.
(Добавление)
PS
У БД нет свойств, но с ней нужно работать. Поэтому, я думаю, класс для работы с БД не лишний.


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
soffrick
Отправлено: 25 Июля, 2013 - 16:11:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


Помог: 17 раз(а)





Hapson пишет:
У БД нет свойств

PHP:
скопировать код в буфер обмена
  1. define('DB_SERVER', 'localhost');
  2. define('DB_LOGIN', 'root');
  3. define('DB_PASSWORD', 'password');
  4. define('DB_NAME', 'myuser');

поэтому?


-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
Страниц (5): [1] 2 3 4 5 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB