PHP - передача переменных в классы - PullRequest
6 голосов
/ 02 февраля 2011

Я пытаюсь выучить ООП, и я сделал этот класс

class boo{

  function boo(&another_class, $some_normal_variable){
    $some_normal_variable = $another_class->do_something(); 
  }

  function do_stuff(){
    // how can I access '$another_class' and '$some_normal_variable' here?
    return $another_class->get($some_normal_variable);
  }

}

, и я называю это где-то внутри another_class класса, как

$bla = new boo($bla, $foo);
echo $bla->do_stuff();

Но я незнать, как получить доступ к $ bla, $ foo внутри функции do_stuff

Ответы [ 4 ]

12 голосов
/ 02 февраля 2011
<?php
class Boo
{

    private $bar;

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

    public function getValue()
    {
        return $this->bar;
    }

}

$x = new Boo();
$x->setBar( 15 );
print 'Value of bar: ' . $x->getValue() .  PHP_EOL;

Пожалуйста, не переходите по ссылке в PHP 5, в этом нет необходимости, и я прочитал, что это на самом деле медленнее.

Я объявил переменную в классе, хотя вы этого не делаетеэто нужно сделать.

10 голосов
/ 02 февраля 2011

Хорошо, во-первых, используйте новый конструктор стиля __construct вместо метода с именем класса.

class boo{

    public function __construct($another_class, $some_normal_variable){

Во-вторых, чтобы ответить на ваш конкретный вопрос, вам нужно использовать memberпеременные / свойства :

class boo {
    protected $another_class = null;
    protected $some_normal_variable = null;

    public function __construct($another_class, $some_normal_variable){
        $this->another_class = $another_class;
        $this->some_normal_variable = $some_normal_variable;
    }

    function do_stuff(){
        return $this->another_class->get($this->some_normal_variable);
    }
}

Теперь обратите внимание, что для переменных-членов внутри класса мы ссылаемся на них, добавляя к ним префикс $this->.Это потому, что свойство связано с этим экземпляром класса.Это то, что вы ищете ...

3 голосов
/ 02 февраля 2011

В PHP конструкторы и деструкторы пишутся со специальными именами (__construct() и __destruct() соответственно).Получите доступ к переменным экземпляра, используя $this->.Вот переписать ваш класс, чтобы использовать это:

class boo{

  function __construct(&another_class, $some_normal_variable){
    $this->another_class = $another_class;
    $this->some_normal_variable = $another_class->do_something(); 
  }

  function do_stuff(){
    // how can I access '$another_class' and '$some_normal_variable' here?
    return $this->another_class->get($this->some_normal_variable);
  }

}
1 голос
/ 02 февраля 2011

Вам нужно захватить значения в классе, используя $ this:

$this->foo = $some_normal_variable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...