[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: $_SERVER['DOCUMENT_ROOT'] для переменной класса
codrilla
Почему так не работает:
private $imgPath = '/photo/magazine/';
private $imgFullPath = $_SERVER['DOCUMENT_ROOT'].$this->imgPath;

А так работает:
private $imgPath = '/photo/magazine/';
private $imgFullPath;
private function __construct() {
$this->imgFullPath = $_SERVER['DOCUMENT_ROOT'].$this->imgPath;
}
T1grOK
Потому, что объявление свойств не может иметь реализации. Тем более использовать $this в объявленном свойстве бессмысленно, так как еще не существует экземпляра объекта. Для этого есть конструктор, в котором выполняются все необходимые операции и вычисления для придания первоначального вида.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
sign63

<?
class
classTest {
private $imgPath = '/photo/magazine/';
private $imgFullPath;
function __construct() {
$this->imgFullPath = $_SERVER['DOCUMENT_ROOT'].$this->imgPath;
echo $this->imgFullPath;
}
}

$obj = new classTest();
?>

Цитата
не работает

это у тебя в классе?

_____________
user posted image
codrilla
Цитата (sign63 @ 5.04.2013 - 12:48)

<?
class
classTest {
private $imgPath = '/photo/magazine/';
private $imgFullPath;
function __construct() {
$this->imgFullPath = $_SERVER['DOCUMENT_ROOT'].$this->imgPath;
echo $this->imgFullPath;
}
}

$obj = new classTest();
?>

Цитата
не работает

это у тебя в классе?

Естественно в классе. Причём то, как вы написали, будет работать. А вот так

<?
class
classTest {
private $imgPath = '/photo/magazine/';
private $imgFullPath = $_SERVER['DOCUMENT_ROOT'].$this->imgPath;
function __construct() {
echo $this->imgFullPath;
}
}

$obj = new classTest();

будет выдавать ошибку
sign63
На сколько я понял $this не работает вне функции!

_____________
user posted image
sign63
class classTest {	
private $d;
$this->d = 'xcv';
function __construct() {
echo $this->d;
}
}

$obj = new classTest();
?>

вот пример

_____________
user posted image
codrilla
Цитата (sign63 @ 5.04.2013 - 13:06)
class classTest {	
private $d;
$this->d = 'xcv';
function __construct() {   
    echo $this->d;
    }
}

$obj = new classTest();
?>

вот пример

Естественно ваш пример работать не будет) Но в моём случае дело не в этом, потому что такой код
<?
class
classTest {
private $imgPath = '/photo/magazine/';
private $imgFullPath = $_SERVER['DOCUMENT_ROOT'].'/photo/magazine/';
function __construct() {
echo $this->imgFullPath;
}
}

$obj = new classTest();

тоже выдаст ошибку
Проблема, как я и описал в заголовке именно с $_SERVER['DOCUMENT_ROOT']
Michael
codrilla, прочти в доках первый абзац

_____________
There never was a struggle in the soul of a good man that was not hard
codrilla
Цитата (Michael @ 5.04.2013 - 13:50)
codrilla, прочти в доках первый абзац

Логично. Собственно я так и думал и тему можно было закрывать уже после поста T1grOK. Всем спасибо.
sign63
Короче ток в функцию) или так:
<?
class
classTest {
private $imgPath = '/photo/magazine/';
function __construct($test) {
echo $test . $this->imgPath;
}
}

$obj = new classTest($_SERVER['DOCUMENT_ROOT']);
?>


_____________
user posted image
sign63
А как же мой вариант?) unsure.gif

_____________
user posted image
codrilla
Скорее вот так
class classTest {
private $imgPath = '/photo/magazine/';
private $imgFullPath;
private function __construct() {
$this->imgFullPath = $_SERVER['DOCUMENT_ROOT'].$this->imgPath;
}
}

Но тут конечно дело вкуса
Быстрый ответ:

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