Доступ к классу через переменную $ в другом классе? - PullRequest
1 голос
/ 30 декабря 2011

У меня есть несколько классов, инициированных на index.php, например:

<?php
require_once('./classes/core.class.php');
require_once('./classes/forum.class.php');
$core = new core();
$forum = new forum();
?>

Есть ли способ использовать $ core в $ forum?Я могу сделать это, используя core::functionName(), но не $core->functionName().

. Классы:

<?php
class forum{
    public function functionName(){

Я могу получить к нему доступ, снова определив класс в каждой функции

public function functionName(){
    $core = new core();

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 30 декабря 2011

Вы можете, например, передать основной объект конструктору класса форума и сохранить его как член.

$forum = new forum($core);


class forum {
  protected $core = null;
  public function __construct(core $core) {
    $this->core = $core;
  }

  public function foo() {
    $this->core->foo('forum');
  }
}

Существуют и другие способы сделать один объект доступным внутри другого, но это одно из простых, но выполнимых решений.
см https://en.wikipedia.org/wiki/Dependency_injection

0 голосов
/ 30 декабря 2011

Вы можете ввести его, посмотрите этот пример

class forum {
    public function hello() {
        return "Hello";
    }
}

class core {
    private $forum;

    public function setForum($forum) {
        $this->forum = $forum;
    }

    public function helloFromForum() {
        echo $this->forum->hello();
    }
}

$f = new forum();
$c = new core();

$c->setForum($f);
$c->helloFromForum();

Аналогичным образом, если вам нравятся фреймворки, это Zend Registry http://framework.zend.com/manual/en/zend.registry.html

...