2015-10-03 5 views
1

После 9 часов попыток получить это право, я обратился в Интернет за помощью. Кажется, я не могу найти ответы на соответствующие запросы в поиске Google.Использование локальной переменной от вызова в функции

В настоящее время у меня есть класс Test. Тест принимает единственный аргумент.

<?php 
    class test { 
     private $varpassed; 

     public function getVarpas() { 
      return $this->varpassed; 
     } 

     Public function setVarpas($value) { 
      $this->varpassed= $value; 
     } 

     public function stringGen(){ 

      $testvar = $this->varpassed; 
      echo $testvar; 
     } 
    } 

Функция stringGen должна возвращать переменную $ varpassed при ее вызове. Значение для $ varpassed устанавливается с помощью функции setVarpas. Однако, когда я когда-либо вызвать метод stringGen() я, кажется, только получать следующее сообщение об ошибке:

Fatal error: Using $this when not in object context in file.php line 14.

Указывая на этой линии:

$testvar = $this->varpassed; 

Есть ли другой способ передать переменную метод stringGen? Я пробовал использовать:

self::$this->varpassed; 

Который также выдает сообщение об ошибке.

+0

класс тест вместо тестового класса() – Swag

+0

'Ошибка анализа: синтаксическая ошибка, неожиданная '(', ожидая '{' в F: \ xampp \ htdocs \ testing \ experimental \ debug.php в строке 2' переименовать его в' class test' вместо – user5173426

ответ

3

сначала создать экземпляр объекта (так что вы можете использовать $ это в контексте), например:

$test = new test(); 

, то вы можете позвонить:

$test->setVarpas('Hello World!'); 

теперь вы можете позвонить:

$test->stringGen(); 
+0

Спасибо. Это сработало. способ, которым я вызывал функцию, выглядит так: test :: stringGen(); что вызывает проблемы. Когда я переключил его на $ test-> stringGen(); он начал работать. Еще раз спасибо. – DairyB

+0

@DairyB Приятно слышать, что я могу вам помочь :) Если вы все еще хотите использовать test :: stringGen(), вы должны сделать свойство и методы статичными. Таким образом, вы можете использовать self ::. Хорошего дня. – Swag

2

вы должны сделать что-то вроде этого

$var = new test(); 
$var->setVarpas("Hello"); 
$var->stringGen(); // this will echo Hello 

$this используется, когда вы жгуты класса. вне класса вы должны использовать объект класса.

+0

Я пытаюсь получить переменная передана методу stringGen, а затем я хочу вернуть переменную через функцию return при вызове метода. Создание объекта и вызов метода не проблема, но, похоже, он не принимает переменную в методе. – DairyB

+0

Спасибо, использовали это как часть решения. Я не могу голосовать, но спасибо! – DairyB

+0

@DairyB вы не _unable_, чтобы больше возвысить ';-)' cheers – user5173426

1

Нельзя объявлять класс с круглыми скобками.

Использование class test { вместо class test(){

+0

Я вижу, что вы редактировали вопрос тем временем. – Victor

+0

Спасибо, исправлено приложение. все же не удалось передать переменную. – DairyB

2

1) Изменить это: class test() к class test

2) Создание и экземпляр первого что-то вроде $t1 = new test();

3) вызова функциональность на $t1->setVarpas(5);

4) Теперь вы можете вызвать функцию $t1->stringGen();

Исправлено:

<?php 
class test 
{ 
private $varpassed; 
public function getVarpas() { 
return $this->varpassed; 
} 

Public function setVarpas($value) { 
$this->varpassed= $value; 
} 

public function stringGen(){ 

$testvar = $this->varpassed; 
echo $testvar; 
} 
} 

$t1 = new test(); 
$t1->setVarpas(5); 
$t1->stringGen(); 

ВЫВОД:

5 
+0

$ varpassed не является статичным. переменная динамически назначается с помощью метода setVarpas. Однако исправил класс. Благодарю. – DairyB

+0

@DairyB проверить изменения. – user5173426

+0

Спасибо, отсортировано :) – DairyB