Я пытаюсь понять концепцию ООП, введенную в PHP 7+ для Conflict Resolution
. Я также хочу сделать динамический вызов save()
в моем дизайне, который будет принимать аргумент по ссылке .
Чтобы проверить концепцию до того, как я создал это дополнение к моей платформе, я хотел попробовать основы простого вывода переменной zval.
Моя текущая черта выглядит так:
trait Singleton {
# Holds Parent Instance
private static $_instance;
# Holds Current zval
private $_arg;
# No Direct Need For This Other Than Stopping Call To new Class
private function __construct() {}
# Singleton Design
public static function getInstance() {
return self::$_instance ?? (self::$_instance = new self());
}
# Store a reference of the variable to share the zval
# If I set $row before I execute this method, and echo $arg
# It holds the correct value, _arg is not saving this same value?
public function bindArg(&$arg) { $this->_arg = $arg; }
# Output the value of the stored reference if exists
public function helloWorld() { echo $this->_arg ?? 'Did not exist.'; }
}
Затем я создал класс, который использует черту Singleton.
final class Test {
use \Singleton { helloWorld as public peekabo; }
}
Я передал переменную, на которую хотел сослаться, примерно так, поскольку метод ожидает ссылку на переменную - его пока не нужно устанавливать.
Test::getInstance()->bindArg($row);
Теперь я хочу имитировать концепцию циклического прохода по строкам из результата базы данных, концепция заключается в том, чтобы разрешить добавление метода save()
в мой проект, но на первом месте стоит разработка базовой концепции.
foreach(['Hello', ',', ' World'] as $row)
Test::getInstance()->peekabo();
Проблема в том, что вывод выглядит так:
Did not exist.Did not exist.Did not exist.
Мой ожидаемый результат будет выглядеть так:
Hello, World
Как я могу сохранить zval внутри моего класса для последующего использования в отдельном методе?
Демонстрация для будущих зрителей, которые сейчас работают, благодаря ответам
Демонстрация этой работы для концепции базы данных, как я объяснил в вопросе здесь:
«Теперь я хочу имитировать концепцию циклического прохода по строкам из результата базы данных, концепция заключается в том, чтобы разрешить добавление метода save () в мой проект»