PHP - Как мне установить значение свойства многомерного массива извне класса? - PullRequest
0 голосов
/ 01 ноября 2010

Я пытаюсь обернуть голову вокруг чего-то, для чего не могу найти решение.В классе AI есть свойство, представляющее собой многомерный массив.В классе B, который создается в классе A, я хотел бы установить значение индекса для свойства из класса A. Я наткнулся на стену, где я не представляю, как перебрать свойство для установки значения для индекса Iнадо.Вот тестовый пример того, что я имею в виду:

<?php

class SomeClass
{
    protected $class;
    protected $book;


    public function __construct()
    {
        $this->book["genre"]["title"] = "The Haunting";
    }


    public function SomeTest()
    {
        $this->class = new AnotherClass();
        $this->class->AnotherTest();
    }
}

class AnotherClass
{
    protected function setBook()
    {
        $indexes = func_get_args();
        $value   = array_pop($indexes);

        /**
         * So now I have the indexes which lead to the array
         * depth I'd like to set a value to, but where do I
         * go from here?
         *
         */
    }

    public function AnotherTest()
    {
        $this->setBook("something", "else", "1984");
    }
}



$someclass = new SomeClass();
$someclass->SomeTest();

?>

Я так потерян, как делать то, о чем я думаю.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2010

В такой ситуации почему вы не используете наследование? Ваша собственность защищена, и я думаю, что она не должна быть доступна вне класса.

Hay вы пытались с наследством?.

Спасибо.

0 голосов
/ 01 ноября 2010

Инициируйте класс Другой с параметром, передайте класс инициатора!

class SomeClass{
    public function SomeTest()    {
        $this->class = new AnotherClass($this);
        $this->class->AnotherTest();
    }
}

Я использую Creator для этих ситуаций!

class AnotherClass{
    function __contruct($creator){
        $this->creator=$creator
    }

    function AnotherTest(){
        $this->creator->setBook("something", "else", "1984");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...