что делаю не правильно ?
<?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.
Курите мануал по ООП в php.
Спустя 10 минут, 24 секунды (7.06.2012 - 13:10) Guest написал(а):
странно а как же тогда его вызывать
когда в кассе подключаю другой класс в
Следовательно все что ко мне надо взять из класса в db вызывается $this->db->method();
Или я не прав?
когда в кассе подключаю другой класс в
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
class.db.php
И работает на ура!
пример
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");
//~ }
}
?>
И работает на ура!
_____________