|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.10.2012, 13:03 | #1 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 316
|
Простая ORM, что тут можна сделать по другому?
Доброго времени суток.
Пытаюсь почистить и оптимизировать класс для работы с базой данных. Вот например кусок кода где выполняется подключение и выбирается драйвер базы данных. PHP код:
PHP код:
PHP код:
И иногда все это начинает бесится и не очищает например переменную с именем таблицы и тогда начинает искать совсем в другой таблице то чего там нет. Что подскажите? (( PS: знаю что не нужно было обзывать так функцию factory(), но так уж сложилось что название осталось старое |
14.10.2012, 15:00 | #2 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
Приводите примеры, когда скрипт ведет себя неправильно. Я не уверен, что вы везде в своем ORM правильно используете статические переменные класса .. даже тут встречается
self::$_handle и $this->_handle ... ох уж это php, когда оно будет кидать не warning, а error И в чем например смысл вызова такого : ORM::factory() ? А вот это совсем бред ...сами хоть прочитайте еще раз)) Код:
Будьте более строги в коде - никаких входящих $table по дефолту NULL !! И в любом случае присваивать self::$_table = $table; Последний раз редактировалось Cronos20; 14.10.2012 в 15:04. |
14.10.2012, 15:37 | #3 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 316
|
по поводу конструктора.
Он же стартует самый первый и ему какая разница статические методы или нет. результат соединения записывается в $this->_handle ну и далее используется уже в других методах, которые не статичны. Или я чтото не догнал? Привожу пример кода (рабочий): ORM (запись в базу): PHP код:
PHP код:
PHP код:
PHP код:
PHP код:
Как бы это на пальцах обяснить.. Лучше выложу готовый код и позже напишу примеры, array_keys($this- |
14.10.2012, 16:15 | #4 |
Форумчанин
Регистрация: 02.07.2011
Сообщений: 144
|
а чем PDO не угодил?
|
14.10.2012, 17:48 | #5 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 316
|
нуу.... тема не про pdo
|
14.10.2012, 18:17 | #6 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
Ну я ж написал .. проверьте условие, чтобы было хотя бы так
Код:
|
14.10.2012, 18:35 | #7 | |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 316
|
а оно и не знакрывалось. просто так как это синглтон то оно же тут получается держится до завершения работы скрипта. когда первый раз подключается и идентификатор записывается в $this->_handle
Или я неправ? если закрывать то это же при каждом запкросе к базе оно будет постоянно создаватся PS: спасибо за помощь, уже исправляю PSSS: Переделал Теперь выглядит так: PHP код:
ORM::factory('user') // тут какието действия. имя таблицы записывается в self::$_table теперь для чего то другого делаю ORM::factory() //делаю какието действия. Но хоть и имя таблицы не передано оно всеравно хранится в self::$_table и потом может вылезти боком. например бывали случаи когда указываю новое имя таблыцы а старое, хранящееся в self::$_table оно тупо не переписывало и искало в другой таблыце которая была указана ранее. вот поэтому я там и делал столько проверок. и не совсем понятно это: Цитата:
фактори статичный ну и саписывает данные в статичные свойства. Когда вернет екземпляр с ним же уже можно будет работать через $this. Или я опять чтото не догоняю? ( Последний раз редактировалось dem66; 14.10.2012 в 18:53. |
|
14.10.2012, 23:05 | #8 |
Форумчанин
Регистрация: 29.09.2011
Сообщений: 103
|
this используется для обычных свойств класса, а self для статических вот в чем разница, а не в том кто и что возвращает.
дальше статическая переменная хранится вне зависимости от количества объектов которые вы создаете, то-есть если Вы вначале передали свойство user, а в следующий раз ничего не передаете то понятно, что в вашей статической переменной будет тот самый user, а это происходит потому, что вы здесь Код:
|
14.10.2012, 23:34 | #9 | |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 316
|
Цитата:
вы пишите что если первый раз передаю название таблыцы то оно записывается и будех хранится и используется тогда когда я ничено не передам. НО я ведь говорил о том что и когда указываю название таблыцы то предыдущий вариант оно может не перезаписать. такое бывало когда не добавил те условия о которых говорили выше. Поэтому я и проверял тут: PHP код:
2. если переданое название таблицы совпадает с тем что в _table ойй... кажись нашел свою ошибку.. должно быть чтото типа этого: PHP код:
2. если переданое название таблицы совпадает с тем что в _table Просьба поправить если не так. ------------------------------- А что скажите по поводу формирования условий запроса? PHP код:
PHP код:
Код:
PHP код:
Код:
PHP код:
Код:
substr_count тут доля того чтоб з нать есть ли точка или нет. Например для запросов с джойнами. PHP код:
Код:
Последний раз редактировалось dem66; 15.10.2012 в 14:55. |
|
16.10.2012, 15:57 | #10 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 316
|
ауу. так что с темой. вижу пока не создам новое сообщение никто в тему не заглянет, да простят меня модераторы
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ORM валидация в Kohana | Anoobis | PHP | 2 | 10.06.2011 15:12 |
Я где-то читал, что на C можна писать драйвера, а ОС без асма, только с C можно? | pufystyj | Свободное общение | 31 | 01.03.2011 20:03 |
Что тут сделать нужно | Rastislav | Паскаль, Turbo Pascal, PascalABC.NET | 9 | 08.10.2010 19:45 |
Зацените кому не лень сайт и напишите что туда можна еще добавить | Антон112 | Помощь студентам | 8 | 27.03.2010 09:09 |
Что то не работает посмотрите и есле можна исправте | Krumyura | Общие вопросы C/C++ | 7 | 11.03.2010 20:14 |