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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ООП в PHP, PHP5 + SQLite3 
V
    Опции темы
WolfAlone
  Дата 6.1.2009, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

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



Здравствуйте! Есть в PHP 5 очень полезная штука: SQLite3. Вопрос в том, как её использовать в классах?
Работа заключается в следующем:
1. $base=new PDO("sqlite:base.db");
2. $base->beginTransaction(); //Открываем БД на чтение
3. $base->query("SQL запрос");
4. $base->commit(); //Закрываем БД

Вопрос в том, как правильно написать класс в PHP в котором бы в начале класса выполнялись строки 1 и 2, потом шли функции класса, а затем выполнялась бы строка 4.

Перепробовал уже все возможные варианты! Упорно выдает ошибку синтаксиса без объяснения причин и номера ошибки!

Код

P.S. Пытаюсь запихнуть это например в класс:
class temp
{
$base=new PDO("sqlite:base.db");
$base->beginTransaction(); //Открываем БД на чтение
...
$base->commit(); //Закрываем БД
};


Проблема в том, что без класса всё это прекрасно работает, а в классе - не хочет!

Добавлено через 1 минуту и 13 секунд
Уже 18ый час долблюсь над одной строчкой кода... 


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
SneG0K
Дата 6.1.2009, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Цитата(WolfAlone @  6.1.2009,  02:14 Найти цитируемый пост)
Проблема в том, что без класса всё это прекрасно работает, а в классе - не хочет!

Ээээ.... Так оно и не будет работать. Ты бы про ООП в PHP прочитал.
Код

class temp
{
public function __construct() {
$base=new PDO("sqlite:base.db");
$base->beginTransaction(); //Открываем БД на чтение
...
$base->commit(); //Закрываем БД
}
}

Да это вообще неправильный код! Класс это контейнер функций и данных. А не просто обвертка для функции. Синтаксис не правильный
PM WWW Skype   Вверх
krundetz
Дата 6.1.2009, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



WolfAlone, к сказанному SneG0K добавлю следующие:
Код

new temp();

тоесть не забудь создать экземпляр класса.

А вообще возможны два пути:
1. Инкапсуляция тоесть примерно то что ты захотел сделать и
2. Наследование
Что предпочесть выбирай когда прочтешь что нибудь про ООП в PHP. Про себя могу сказать что в подавляющем числе случаев удобнее работать с инкапсуляцией.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
WolfAlone
  Дата 6.1.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

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



<?php
SneG0K, спасибо огромное!

Почитал про ООП в PHP, немного помогло... Только вот теперь вопрос в том, почему переменная $base не инициализируется во всех остальных функциях? При попытке сделать вот так:

Код

<?

class temp
{
public function __construct() {
$base=new PDO("sqlite:base.db3");
$base->beginTransaction(); //Открываем БД на чтение
}
public function SQL_Query() {
    $qry=$base->query("SELECT * FROM names");
    while ($result=$qry->fetch()) {
        //Обрабатываем результат
    };    
}

public function __destruct() {
    $base->commit(); //Закрываем БД
}
}
$x = new temp();
$x->SQL_Query();

?>


При попытке сделать так, выдает ошибку: Fatal error: Call to a member function query() on a non-object in C:\Program Files\VertrigoServ\www\1.php on line 10

Это сообщение отредактировал(а) WolfAlone - 6.1.2009, 13:30


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
Canarat
Дата 6.1.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



WolfAlone, читай ещё и про переменные в PHP и области их видимости. Можно сделать так:
Код

class temp {
private $base;

public function __construct() {
$this->base=new PDO("sqlite:base.db3");
$this->base->beginTransaction(); //Открываем БД на чтение
}
...
}


PM MAIL   Вверх
WolfAlone
  Дата 6.1.2009, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

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



Спасибо огромное всем, кто принял участие в решении моего вопроса! Очень помогли, это прямо подарок мне на Рождество!
Выражаю особую благодарность г-ну Canarat и г-ну SneG0K! Всем ещё раз огромное спасибо! Тема закрыта!


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1029 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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