Передача массива в магический метод get - PullRequest
0 голосов
/ 31 мая 2018

Из любопытства, есть ли способ передать массив в магическом методе get.Это должен быть только магический метод get или что-то эквивалентное.(Но для этого не следует использовать другую функцию)

Например, ЭТО ВОЗМОЖНО?

<?php
// Book.php
Class Book{
    /**
     * Hold the book's details
     * @var array
     */
    private $book_details = [];

    function __set($name, $value)
    {
        $book_list[$name] = $value;
    }

    function __get($name)
    {
        if (is_array($name)) {
            $collect_info = [];
            foreach ($this->book_details as $item => $value) {
                if ($item == $name) {
                    $collect_info[$item] = $value;
                }
            }

            return $collect_info;
        } else {
            return $this->book_details[$name];
        }
    }
}

и в другом файле, например resourses.php

<?php
// resources.php

    require_once "Book.php";

    $book = new Book();

    $book->name = "Somebook's Name";
    $book->author = "This awesome dude";
    $book->pages = "723";
    $book->about = "Programming Content";

    $book->name; // prints Somebook's Name

    print_r($book->(["name", "pages"]));

    // prints
    //   Array(
    //        [name] => Somebook's Name,
    //        [pages] => 723
    //   )
...