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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна помощь по PEAR, DB, DB_NestedSet, Singelton 
:(
    Опции темы
izOne
  Дата 31.3.2005, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



singelton.php:
Код

<?php
require_once('DB/NestedSet.php');
class NestedSetGroups extends DB_NestedSet {
    function NestedSetGroups($driver, $dsn, $params){
        static $singelton;
        if (!isset($singelton)) {
            $singelton = true;
            #$singelton = new NestedSetGroups($driver, $dsn, $params);
            echo "$driver, $dsn, $params";
            $singelton = & DB_NestedSet::factory($driver, $dsn, $params);
        }
        return $singelton;        
    }
}
?>


DB/NestedSet.php:
Код

class DB_NestedSet {
...
    function & factory($driver, $dsn, $params = array()) {
        $classname = 'DB_NestedSet_' . $driver;
        if (!class_exists($classname)) {
            $driverpath = dirname(__FILE__) . '/NestedSet/' . $driver . '.php';
            
            if (!file_exists($driverpath) || !$driver) {
                return PEAR::raiseError("factory(): The database driver '$driver' wasn't found", NESE_ERROR_NODRIVER, PEAR_ERROR_TRIGGER, E_USER_ERROR);
                echo $driverpath;
            }
            include_once($driverpath);
        }
        $c = & new $classname($dsn, $params);
        var_dump($c);
        return $c;
    }
...
}


Дамп выдает, среди прочего, слудеющее:

Код

object(db_nestedset_db)(28) {
  ["params"]=>
  array(9) {
    ["id"]=>
    string(2) "id"
    ...
  }
  ...
["db"]=>
  &object(db_mysql)(24) {
    ["phptype"]=>
    string(5) "mysql"
    ["dbsyntax"]=>
    string(5) "mysql"
    ["features"]=>
    array(7) {
       ...
    }


Т.е. как я понимаю соединение с базой создается, конструктор возвращает нужный обьект, но index.php
Код

<?php
require_once(CFG_DIR_ROOT.'/core/modules/catalog/singelton.php');
$nss = new NestedSetGroups('DB', CFG_SQL_DSN, $nsMap);    
$nss->setAttr(array(
    'node_table' => 'ns_groups',
    'lock_table' => 'ns_groups_locks'
));
$nss->setsortMode(NESE_SORT_PREORDER);
$tree = $nss->getAllNodes(true);
c_var_dump($tree);
?>


выпадает с ошибкой:
Код

Fatal error: Call to undefined function: _quoteidentifier() in z:\home\inbest\core\pear\DB\NestedSet.php on line 1934


Какие будут советы?
--------------------
Успех ждет каждого, но иногда всю жизнь.
PM Jabber   Вверх
izOne
Дата 4.4.2005, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Разобрался... Надо было вместо
Код

= new NestedSetGroups('DB', CFG_SQL_DSN, $nsMap); 

писать
Код

= NestedSetGroups::Singelton('DB', CFG_SQL_DSN, $params);


Код

<?php
/*---------------------------------------------------------------*/
define("CFG_DIR_ROOT", realpath(dirname(__FILE__)."/../"));
define('CFG_SQL_HOST', 'localhost');
define('CFG_SQL_USER', 'demo');
define('CFG_SQL_PASSWORD', 'demo');
define('CFG_SQL_DB', 'inbest');
define('CFG_SQL_DSN', 'mysql://'.CFG_SQL_USER.':'.CFG_SQL_PASSWORD.'@'.CFG_SQL_HOST.'/'.CFG_SQL_DB);
@ini_set("include_path", CFG_DIR_ROOT."/core/pear");
require_once("DB/NestedSet.php");
/*---------------------------------------------------------------*/
class NestedSetGroups extends DB_NestedSet {
    function & Singelton($driver = 'DB', $dsn = null, $params = array()) {
        static $singelton;
        if (!isset($singelton)) {
            $singelton = true;
            $singelton = DB_NestedSet::factory($driver, $dsn, $params);
        }
        return $singelton;
    }
}
$params = array(
    'id'        => 'id',    
    'nsleft'    => 'l',
    'nsright'    => 'r',
    'nslevel'    => 'level',
    'rootid'    => 'rootid',
    'nsorder'    => 'norder',
    'name'        => 'name',
    'nsdescr'    => 'nsdescr',
    'visible'    => 'visible'
);
$nss = & NestedSetGroups::Singelton('DB', CFG_SQL_DSN, $params);
$nss->setAttr(array(
    'node_table' => 'ns_groups',
    'lock_table' => 'ns_groups_locks'
));

echo "<pre>";
var_dump($nss->getAllNodes(true));
echo "</pre>";
echo "<hr>";
$t2 = NestedSetGroups::Singelton();;
echo "<pre>";
var_dump($t2->getAllNodes(true));
echo "</pre>";
?>


Это сообщение отредактировал(а) izOne - 4.4.2005, 23:59
--------------------
Успех ждет каждого, но иногда всю жизнь.
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0884 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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