[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ошибка Using $this when not in object context in
tp123
Есть небольшой вопрос. Возникает ошиба Fatal error: Using $this when not in object context in /var/www/fata/class/settings.inc.php on line 14 Тоесть вот в этой строке $rew = $this->db->queryArray("select * from `site_settings`");
что делаю не правильно ?

<?php
class
settings
{
static private $db;

function __construct()
{
$this->db = new db;
}

function sitesay()
{
$rew = $this->db->queryArray("select * from `site_settings`");
return $rew['say'];
}

public function num_in_page()
{
$query = "select * from `site_settings`";
$row = mysql_query($query);
$rew = mysql_fetch_array($row);
return $rew['num_in_page'];
}

}



?>


<?php
include './dbconf.php';
class db
{
public $catalog;

/**
* Подключение к MySQL
**/

public function __construct()
{

// Подключение к СУБД
$link = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die (mysql_error());

// Выбираем базу данных
mysql_select_db(DB_NAME, $link);

//Устанавливаем кодировку UTF8
mysql_query ("SET NAMES utf8");
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");

/*настройки сайта*/
//$this->say = $this->sitesay();

$this->catalog = array("catalog","goods");
}

function queryArray($sql)
{
$row = mysql_query($sql);
$rew = mysql_fetch_array($row);
return $rew;
}


}

?>




Спустя 10 часов, 11 минут, 2 секунды (7.06.2012 - 10:25) vagrand написал(а):
Покажите как вы вызываете метод sitesay()

Спустя 1 час, 21 минута, 32 секунды (7.06.2012 - 11:46) tp123 написал(а):
Я его перенес в отдельный класс и вызываю sattungs::sitesay(); и кстати тоже ругается.

Спустя 1 час, 12 минут, 58 секунд (7.06.2012 - 12:59) vagrand написал(а):
Ругается потому что вы вызываете метод как статический, а для статического вызова не создается экземпляр класса, следовательно нет и переменной $this.
Курите мануал по ООП в php.

Спустя 10 минут, 24 секунды (7.06.2012 - 13:10) Guest написал(а):
странно а как же тогда его вызывать
когда в кассе подключаю другой класс в

private $db;

function __construct()
{
$this->db = new db;
}

Следовательно все что ко мне надо взять из класса в db вызывается $this->db->method();
Или я не прав?

Спустя 43 минуты, 18 секунд (7.06.2012 - 13:53) vagrand написал(а):
Создавайте экземпляр вашего класса и вызывайте метод через этот экземпляр.

Спустя 10 минут, 24 секунды (7.06.2012 - 14:03) tp123 написал(а):
public function sitesay()
{
$sql= new db();
$query = "select * from `site_settings`";
$rew = $sql->queryArray($query);
return $rew['say'];
}

А вот так работает ! Странно как-то =\

Спустя 11 минут, 28 секунд (7.06.2012 - 14:15) vagrand написал(а):
Ничего странного нет, вы же не используете тут $this

Спустя 6 часов, 32 минуты, 40 секунд (7.06.2012 - 20:48) tp123 написал(а):
а как тогда правильно мне вызвать. Хорошо.. примерно тогда следующий
<?php

class
test1
{
function q()
{
echo "Q";
}
}


class test2
{
private $test1;
function __construct()
{
$this->test1 = new test1;
}

function one()
{
$this->test1->q();
}
}


$w= new test2;
$w-> one();

Почему здесь работает :?

Спустя 50 минут, 36 секунд (7.06.2012 - 21:38) vagrand написал(а):
Я вам уже сказал: "Курите мануал по ООП в php" судя по вашим вопросам вы не понимаете элементарных вещей

Спустя 1 час, 36 минут, 38 секунд (7.06.2012 - 23:15) tp123 написал(а):
vagrand , спасибо за маральную подержку Я как не проффессионал, и таковым действительно себя не считаю пошел методом от противного не работает здесь, значить напишем по другому, переписал... и что удивительно заработало)))

пример
conf.inc.php

<?php
class
conf
{
private $db;
private $res;

function __construct()
{
$this->db = new db;
$this->res = $this->db->test1("select * from `site_settings`");
}

function say($parametr)
{
return $this->res['' . $parametr . ''];
}
}


$sett = new conf;
?>


class.db.php
<?php
include './dbconf.php';
class db
{
public $catalog;

/**
* Подключение к MySQL
**/

public function __construct()
{

// Подключение к СУБД
$link = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die (mysql_error());

// Выбираем базу данных
mysql_select_db(DB_NAME, $link);

//Устанавливаем кодировку UTF8
mysql_query ("SET NAMES utf8");
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
/*настройки сайта*/
$this->catalog = array("catalog","goods");
}

function test1($sql)
{
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
return $row;
}
/**
* Отключение от MySQL
**/

//~ public function __destruct()
//~ {
//~ $disconnect = @mysql_close() or die("Error disconnect MySQL server");
//~ }

}
?>


И работает на ура!


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.