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 :: Проблема в наследование. [2]

 PHP.SU

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


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

> Без описания
imya
Отправлено: 13 Июня, 2013 - 14:43:35
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




Проклятый принц пишет:
Везде public поставил. Всё равно ругается.
Fatal error: Call to a member function Регистрация() on a non-object

Назовите методы латиницей.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
esterio
Отправлено: 13 Июня, 2013 - 14:45:26
Post Id



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


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


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




vanicon пишет:
Да. Я считаю что modelDb должна уметь работать с бд, насколько я помню вы знакомы с yii так там этот класс называется ActiveRecord..

ActiveRecord наследуется от CModel, которая как раз и не умеет работать с БД.
ActiveRecord отлично подходит для админкы, а именно для операций CRUD. Но более сложная логика дается с трудом.
vanicon пишет:
Вам не находите здесь противопоставления? (исходя из того как Registry - объект содержащий ссылки на другие объекты)
И кстати этот паттерн мне так и не пригодился, я лучше сделаю статичное свойство в классе типа Framework если уж понадобиться... хотя пока не понадобилось.

Как раз ссилок то и не плодится. Все обьекты в одном месте. Вот пример

Спойлер (Отобразить)
 
 Top
Проклятый принц
Отправлено: 13 Июня, 2013 - 14:56:25
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Февр. 2013  


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

[+]


imya пишет:
Проклятый принц пишет:
Везде public поставил. Всё равно ругается.
Fatal error: Call to a member function Регистрация() on a non-object

Назовите методы латиницей.


PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. class Подключение {
  4.         private $Подключение_к_базе_данных;
  5.         private static $Инициация_подключения = null;
  6.        
  7.         public function __construct() {
  8.                 $this->Подключение_к_базе_данных = new mysqli("localhost", "root", "", "Forum");
  9.                 $this->Подключение_к_базе_данных->query("SET NAMES 'cp1251'");
  10.  
  11.         }
  12.        
  13.         public static function Инициация_подключения() {
  14.                 if(self::$Инициация_подключения === null) self::$Инициация_подключения = new Подключение();
  15.                         return self::$Инициация_подключения;
  16.                
  17.         }
  18.        
  19.         public function Регистрация() {
  20.                 $this->Подключение_к_базе_данных->query("INSERT INTO `Forum`.`Forum` (`Login`, `Thema`, `Content`, `Date`, `Katalog`, `id`) VALUES ('Ник', 'Тема', 'Все работает нормально, спасибо!', '".time()."', 'Тестирование', NULL)");
  21.         }
  22.        
  23.         public function __destruct() {
  24.         if ($this->Подключение_к_базе_данных) $this->Подключение_к_базе_данных->close();
  25.         }
  26. }
  27.  
  28. $Форум =  Подключение::Инициация_подключения();
  29. $Форум->Регистрация();
  30. ?>
  31.  
  32.  

Тут и с кириллицей работает всё нормально.
Не в кириллице дело, уверен на 100%.
Даже всё сделал public, всё равно ругается.
 
 Top
esterio
Отправлено: 13 Июня, 2013 - 14:57:52
Post Id



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


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


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




Проклятый принц пишет:
class Подключение

Вам же неоднократно писали давать названия ЛАТИНИЦЕЙ
 
 Top
vanicon
Отправлено: 13 Июня, 2013 - 14:58:08
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


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




esterio
Хм, в данном случае при подключении к бд я считаю более правильным использования singleton'a, нежели Registry что вы и сделали выше.
И также без ссылок:
PHP:
скопировать код в буфер обмена
  1. Singleton::init('default')->query();

(Добавление)
И еще насчет моделей тоже заморачивался с ними раньше, но не прежились они у меня, поэтому понимание модели как таковой у всех разное...
Ps. у deepvarvar'a их вообще нет.


-----
Так было, так есть и так будет
 
 Top
esterio
Отправлено: 13 Июня, 2013 - 15:04:32
Post Id



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


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


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




А если подключений нужно два или более как тога. В моем случае подойдет
PHP:
скопировать код в буфер обмена
  1. Registry::getInstance()->set('db2', new db(DB_HOST2, DB_USER2, DB_PASSWORD2, DB_DATABASE2, DB_CHARSET2));
  2. // ...
  3. Registry::getInstance()-<get('db2')->query($query);


vanicon пишет:
Ps. у deepvarvar'a их вообще нет.

Я смотрел код DeepVarvar-a и знаю как он поступил
 
 Top
Проклятый принц
Отправлено: 13 Июня, 2013 - 15:09:32
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Февр. 2013  


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

[+]


esterio пишет:
Проклятый принц пишет:
class Подключение

Вам же неоднократно писали давать названия ЛАТИНИЦЕЙ


PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. class ONclass {
  4.         public $dbKey;
  5.         public static $iniKey = null;
  6.        
  7.         public function __construct() {
  8.                 $this->dbKey = new mysqli("localhost", "root", "", "Pavel");
  9.                 $this->dbKey->query("SET NAMES 'cp1251'");
  10.  
  11.         }
  12.        
  13.         public static function iniKey() {
  14.                 if(self::$iniKey === null) self::$iniKey = new ONclass();
  15.                         return self::$iniKey;
  16.                
  17.         }
  18.        
  19.         public function __destruct() {
  20.         if ($this->dbKey) $this->dbKey->close();
  21.         }
  22. }
  23.  
  24.  
  25.  
  26. class REGclass extends ONclass{
  27.                 public function __construct() {
  28.                         parent::__construct();
  29.                 }
  30.                 public static function iniKey() {
  31.                         parent::iniKey();
  32.                 }
  33.                
  34.                         public function RegFunc() {
  35.                                 $this->dbKey->query("INSERT INTO  `Pavel`.`polz` (`login` ,`password`)VALUES ('name',  'pass')");
  36.                         }
  37.                
  38.                 public function __destruct() {
  39.                         parent::__destruct();
  40.                 }
  41. }
  42.  
  43.  
  44. $Soed = REGclass::iniKey();
  45. $Soed->RegFunc();
  46.  
  47. ?>
  48.  
  49.  


Проблема та жа, та жа!
Разве до этого пример с кириллицей не был качественным, что мол, с кириллицей всё норм идёт?
Не в кириллице дело 100%.
 
 Top
vanicon
Отправлено: 13 Июня, 2013 - 15:09:51
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


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




esterio
Давайте не будем спорить о том как подключаться к бд Улыбка
Каждый делает по своему, и каждый вариант по своему правильный, и это вполне нормально.
esterio пишет:
если подключений нужно два или более как тога. В моем случае подойдет

Ну а в моем вот так:
PHP:
скопировать код в буфер обмена
  1. Singleton::init('ne_default')->query();

esterio пишет:
Я смотрел код DeepVarvar-a и знаю как он поступил

Довольно своеобразно, его творение я привел в качестве примера и не более...
Давайте лучше объясним товарищу Проклятый принц что писать на латинице надо))
(Добавление)
Проклятый принц
Хватит писать бред, а по теме если то в ONclass нет вызываемого вами метода RegFunc.


-----
Так было, так есть и так будет
 
 Top
Проклятый принц
Отправлено: 13 Июня, 2013 - 15:15:27
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Февр. 2013  


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

[+]


Надо-ненадо, - я с китайцами не работаю, кириллица мне еще ни когда не мешала в php и js. Помешала лишь в C++ и Basic.
Было бы неплохо, если Вы прекратите друг другу трололо устраивать, и реально подсказали, в чём у меня проблема. (кроме с головой)
(Добавление)
vanicon, RegFunc() есть только у REGclass, а у ONclass его и вовсе не должно быть. REGclass наследует подключение и отключение с бд, и лишь у него есть специфичная функция RegFunc.
 
 Top
vanicon
Отправлено: 13 Июня, 2013 - 15:20:37
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


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




Проклятый принц
Вам может и нет, но когда на ваш код взглянет норм специалист, то уверяю он придет в ужас.
Ну а по теме я уже написал:
vanicon пишет:
Хватит писать бред, а по теме если то в ONclass нет вызываемого вами метода RegFunc.

(Добавление)
Недоглядел, в переменной $Soed нет объекта вообще, он не возвращается от метода iniKey


-----
Так было, так есть и так будет
 
 Top
Проклятый принц
Отправлено: 13 Июня, 2013 - 15:34:45
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Февр. 2013  


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

[+]


Блин, блин, блин... Хотел сократить себе геморрой, написал наследье, чтобы можно было собственные модули без особо труда вставлять, а появился 2-й геморрой...
Ты прав. Без тебя бы не допёрло...
Теперь мозги не приложу, как сделать так, чтобы объект вызвался. Наследственный iniKey же вызывает не его, а только родителя.
Млять...
(Добавление)
Ура! Я сделал это. Спасибо Вам всем!
 
 Top
vanicon
Отправлено: 13 Июня, 2013 - 15:39:41
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


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




Проклятый принц
смотрите паттерн singleton
(Добавление)
и никакого гемороя не будет...


-----
Так было, так есть и так будет
 
 Top
caballero
Отправлено: 13 Июня, 2013 - 15:51:46
Post Id


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


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


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




Цитата:
Надо-ненадо, - я с китайцами не работаю, кириллица мне еще ни когда не мешала в php и js

Глупо


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
esterio
Отправлено: 13 Июня, 2013 - 16:00:12
Post Id



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


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


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




vaniconПроклятый принц
Не знаю где Вы увидели трлинг в моих постах. Я лиш показал пример как я бы поступил и его преимушества над синглтном. А про кирилицу в наименованиях - то соглашусь, даже я не спец увидел бы такое. бррр аж мурави по коже Радость Радость Радость
 
 Top
caballero
Отправлено: 13 Июня, 2013 - 16:29:28
Post Id


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


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


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




Цитата:
даже я не спец увидел бы такое. бррр аж мурави по коже

это ты просто с 1С не работал Улыбка

Если ... Тогда
...
КонецЕсли


и что интересно, это никак не упрощает програмирование


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (4): « 1 [2] 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB