<?php
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
# Needed to re-pass the variable by reference to share the zval to _arg
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.'; }
}
final class Test {
use \Singleton { helloWorld as public peekabo; }
}
Test::getInstance()->bindArg($row);
foreach(['Hello', ',', ' World'] as $row)
Test::getInstance()->peekabo();