2015-02-15 2 views
0

Мои геттеры и сеттеры php, похоже, работают неправильно. Вот мой код. Файл test.php содержит следующее ...php setter и getter не работают

class test{ 
    private static $instance; 
    private $name=null; 

    public static function getInstance(){ 
      if(!isset(test::$instance)) { 
       test::$instance = new test(); 
      } 
      return test::$instance; 
     } 

    public function setName($n){ 
     $this->name=$n; 
    } 

    public function getName(){ 
     return $this->name; 
    } 

test2.php имеет форму, которая запрашивает у пользователя ввести свое имя. Когда они нажимают кнопку «Отправить», у меня есть код, который выглядит так, чтобы установить имя, которое они ввели в имя переменной в тесте.

$test=test::getInstance(); 
$test->setName("My PHP Test"); 
print "The name is " . $test->getName() . "<br />; 

The name is My PHP Test распечатан успешно.

Однако, как только они отправляют форму на test2.php, которая берет пользователя на test3.php, и я пытаюсь использовать тот же код для возврата имени, возвращаемое значение равно null.

$test=test::getInstance(); 
print "The name is " . $test->getName() . "<br />; 

The name is печатается.

Я добавил include('test.php'); в каждый файл, но это не поможет.

Есть ошибки в моем коде? А также это правильный подход в целом? Если не то, что есть?

Любая обратная связь приветствуется. Благодарю.

ответ

3

Объекты не сохраняются автоматически, вам необходимо сохранить данные в test2.php и получить их в test3.php либо с использованием базы данных, формы или файлов cookie.

Я добавил include ('test.php'); для каждого файла, но это не помогает.

Вероятно потому, что вы создаете новый экземпляр теста, который переписывает один в test.php

+1

Может использовать сессии также, но это пятно на – Bankzilla