Собственно, вопрос в теме.Нужно создать объект в index.php, так что бы его методы были видны в любом участке кода. Может вопрос тривиален, но мне не поддается. PHP: <?php class Foo { public function __construct() {} public function GetName() { return __METHOD__; } } class Bar { function __construct() {} public function _Print() { $foo->GetName(); } } $foo = new Foo(); $bar = new Bar(); $bar->_Print(); ?> Такой код не работает...Передача объект в качестве параметра знаю, не устраивает.
Говнокод, но сойдет. Принцип работы с глобальными переменными в РНР. PHP: <?php class First { protected $name; public function SetName($name) { $this->name = $name; } public function GetName() { return $this->name; } }; class Second { protected $ob; public function __construct($obname) { $this->ob = $GLOBALS[$obname]; } public function Display() { echo $this->ob->GetName(); } }; // работаем с первый классом $first = new First; $first->SetName("Apple"); // Работает со вторым классом $second = new Second("first"); $second->Display(); ?>
А почему это говнокод? Что в нем не так?Я допустим хочу использовать(или лучше не стоит?) ваш пример, что надо сделать что бы его "причесать".
Может вам подойдет singleton? PHP: <?php class Foo { static private $self; public function _printf(){ echo "ssss"; } /** * @return Foo */ static function instance(){ if (!self::$self){ self::$self = new self(); } return self::$self; // Спасибо Luge за баг-репорт } } // В любом другом месте Foo::instance()->_printf(); // Или $bar = Foo::instance(); $bar->_printf();
PHP: <? class Locator { protected static $classes=array(); static function getClass($name){ $md=md5(strtolower($name)); if(empty(self::$classes[$md])){ if(class_exists($name)){ self::$classes[$md]=new $name(); }else print "Error: class '{$name}' does't exists"; } return self::$classes[$md]; } } ?>
Apple надо было не обижаться, а спросить у Mr.M.I.T.'а как он собирается вызывать свой класс и чем singleton или выросший из него Service Locator лучше, в случае, если надо зы. везде есть статические методы