2014-02-12 4 views
1

Я только что создал свой первый PHP class, но я новичок в этом, и теперь я не знаю, как вызвать variable внутри function, который я создал.Вызовите переменную из функции, находящейся внутри класса?

Например:

class Example 
{ 
    public function testFunction() { 
    $var1 = "Test"; 
    $var2 = "Hello"; 
    } 
} 

А потом, к примеру, echo $ var1.

Я знаю, что я могу вызвать функцию через это:

$something = new Example(); 
$something->testFunction(); 

Но как я могу назвать один из этих переменных внутри функции?

Я также знаю, что если переменная была вне функции, было бы:

$something = new Example(); 
echo $something->var1; 

Я мог бы использовать return, но таким образом я закончу только с одной переменной, и у меня есть несколько переменных внутри эта функция.

Я надеюсь, что вы можете мне помочь.

+0

Эти переменные внутри функции не могут быть доступны извне функции, если вы не вернете их. –

ответ

2

Переменные внутри функций недоступны вне их. Эта функция должна иметь значение return.

т.е.

function getName(){ 
    return "helion3"; 
} 

echo $myClass->getName(); 

Если вам нужно больше, чем один, возвращает массив:

return array("name1","name2"); 
1

Чтобы получить доступ к переменным из внешних функций класса, как это, вам нужно установить переменные как свойства класс:

class Example { 
    public $var1 = ''; 
    private $var3 = ''; // private properties etc are not available outside the class 

    public function testFunction() { 
     $this->var1 = 'Test'; 
     $var2 = 'Test2'; 
     $this->var3 = 'Test3'; 
    } 
} 

$something = new Example(); 
echo $something->var1; // Test 
echo $something->var2; // can't do this at all (it's not an object property) 
echo $something->var3; // can't do this, it's private! 

Конечно, вы можете вернуть все, что вам нравится, из самой функции ...

public function testFunction() { 
    $this->var1 = 'Test'; 
    $var2 = 'Test2'; 
    $this->var3 = 'Test3'; 
    return array($this->var1, $var2, $this->var3); 
} 

Вы можете вернуть личные свойства и локально контекстные переменные ...

list($var1, $var2, $var3) = $something->testFunction(); // all there! 
1

Переменные, объявленные внутри функции доступны только в теле функции.

Если функция должна возвращать более одного значения, то либо а) возвращает новый объект, или б) возвращает массив:

return [$var1, $var2]; 

И в вызывающем коде:

list($a, $b) = $something->testFunction(); 
Смежные вопросы