2014-01-31 3 views
0

Я просто большой участник в объектно-ориентированном программировании и в настоящее время изучаю объектно-ориентированный php, и я немного запутался с включением переменной внутри переменной внутри класса, обычно я бы делал что-то вроде:var in var in oop php

$div_content="some content"; 
$div = '<div>'.$div_content.'</div>'; 

но при попытке сделать это, как это, я получаю сообщение об ошибке:

class SomeClass{ 

private $div_content ="some content"; 
public $div='<div>'.$div_content.'</div>'; 

function __construct(){ 

echo $this->div; 

} 

} 

Может кто-нибудь, пожалуйста, помогите мне понять, что им делать неправильно здесь? благодарит заранее.

+1

Другие просмотрели его, хотя действительно стоит прочитать через [* PHP * * OOP * docs] (http://www.php.net/manual/en/language.oop5.php). Ваша проблема подчеркнута в первый абзац на [свойства] (http://www.php.net/manual/en/language.oop5.properties.php). – Emissary

ответ

3
function __construct(){ 
    $this->div = '<div>'.$this->div_content.'</div>'; 
    echo $this->div; 
} 

Вы можете определить только статические значения на декларациях, используйте __construct() для его

+4

Это не «помогает [им] понять, что [они] делают неправильно». –

1

При определении свойств на классе, как это, вы можете использовать только определенное значение. Не может быть никаких расчетов или операций. Например, у вас не может быть public $five = 2+3;, это не сработает.

Вместо этого вы можете определить эти свойства в конструкторе своей функции.

1

Вы должны изучить методы получения и установки. Вы просто хотите получить что-то, так что используйте метод получения для $div, называется getDiv

class SomeClass{ 
    private $div_content = "some content"; 

    public function getDiv() { 
    return '<div>'.$this->div_content.'</div>'; 
    } 

    function __construct(){ 
    echo $this->getDiv(); 
    } 
} 
1

Переменные обрабатываются немного отличаются в классах - и строительство, как ваша или Maja х --- если он работает - это оценка вызвать - «проблемы»

попробовать что-то вроде этого, вместо:

class SomeClass{ 

private $div_content; 
public $div; 

function __construct($content){ 

$this->div_content = $content; 
$this->makeDiv(); 

} 

function makeDiv(){ 

echo "<div>".$this->div_content."</div>"; 

} 
} 

конечно, есть десяток способов сделать это, но я бы посоветовал вам не определять переменные в начале ,