переменная внутри класса

Devona

Новичок
переменная внутри класса

такая проблема.
есть класс. внутри класса переменная есть. вне класса тоже.
но в функцию внутри класса эта переменная не передаётся. то есть передаётся пустое значение.
код такой

function getCategoryProducts($cat_id = 0, $firm = '', $sort = 'model', $offset = 0) {
global $database;

$this->size = 10;
$this->cat_id = intval($cat_id);
$this->offset = intval($offset);
$this->firm = $database->getEscaped($firm);
..........
}
в чём может быть проблема?
 

Devona

Новичок
ой. пардон) заработалась))
$cat_id

-~{}~ 06.03.07 17:38:

при этом если написать к примеру
$this->cat_id = 10;
вместо
$this->cat_id = intval($cat_id);

всё будет работать. но id будет статично 10)
 

Devona

Новичок
Гравицапа
и?
ну прочитала я там всё. в чём ошибка - непонятно. почему собственно пропадает переменная.
а сообщение
Notice: Undefined offset: 0 in c:\site\modules\shop\shop.php on line 190

как раз от того и выдаётся что нужная переменная пустая и далее без неё запрос в базу не выполняется
 

StUV

Rotaredom
Devona
что выдаст
$this->cat_id = $cat_id;
var_dump($this->cat_id);

при вызове
$obj->getCategoryProducts(10);

???
 

Devona

Новичок
Апокалипсис
ага. но если убрать то на строке $this->cat_id = intval($cat_id); получается ошибка undefined variable.
если оставить просто function getCategoryProducts($cat_id, $firm = '', $sort = 'model', $offset = 0)
тоже самое что и изначально получается.
Гравицапа
если переменная не пустая ($this->cat_id = 10;) запрос в бд выполняется. если оставить $this->cat_id = intval($cat_id); то запрос невыполняется. то есть возвращает пустое значение.
$cat_id один из параметров запроса

-~{}~ 06.03.07 17:57:

StUV
что выдаст
$this->cat_id = $cat_id;
var_dump($this->cat_id);
выдаёт естественно NULL
 

StUV

Rotaredom
Devona
м.б. у тебя где-нить в имени переменной затесался символ в русской раскладке ? =)))
 

Devona

Новичок
если бы всё так просто было.
было бы неправильно название имела бы просто undefined variable
 

StUV

Rotaredom
хм
$this->cat_id = $cat_id;
var_dump($cat_id);
var_dump($this->cat_id);

даст
10
NULL

?
 

Devona

Новичок
как передать внутрь класса переменную?
нашёлся недочёт. внутри класса тоже переменной нет..

-~{}~ 06.03.07 18:16:

StUV
$this->cat_id = $cat_id;
var_dump($cat_id);
var_dump($this->cat_id);

такая конструкция вообще ничего не выдаёт О_о
 

Devona

Новичок
class Shop {
.................
var $a = array();
var $b = $some_var; <-parse error, unexpected T_VARIABLE
.................
}

-~{}~ 06.03.07 18:19:

StUV
http://phpfaq.ru/debug
перечитано уже Н-раз
 

StUV

Rotaredom
StUV
http://phpfaq.ru/debug
перечитано уже Н-раз
это полезно =)
еще Н-раз почитай документацию, раздел про работу с классами

-~{}~ 06.03.07 18:20:

у тебя какая версия пхп?

-~{}~ 06.03.07 18:22:

пхп 4.х.х

class Foo
{
var $bar;
function Foo($barValue)
{
$this->bar = $barValue;
}
}

в пхп 5.х.х замени function Foo на function __construct

-~{}~ 06.03.07 18:23:

или сделай метод

function setBar($barValue)
{
$this->bar = $barValue;
}
 

Oldwin

Новичок
var $b = $some_var; <-parse error, unexpected T_VARIABLE
А что ты этим хотела сделать?

P.S. Интересно, как бы на вопрос о конструкторе ответил StUV, если бы его задала не девушка...
 
Сверху