PHP передать объекты по ссылке, обновить класс - PullRequest
1 голос
/ 07 ноября 2019

У меня есть класс, который я пытаюсь обновить, меня попросили продемонстрировать проходящие объекты по ссылке, но я не уверен, как это относится к классу ниже, может кто-нибудь дать мне несколько указателей, я думал, что я все готов сделать это стакие методы, как getManegement() Если бы вы могли дать некоторое представление о том, что мне нужно сделать, может быть, некоторые ссылки или примеры кода, которые были бы хороши

namespace App\Office\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Class Office
 * @package App\Office\Entity
 * @ORM\Entity()
 * @ORM\Table(name="office")
 */
class Office
{
    /**     
     * @ORM\Column(type="string", length=100)
     */
    public $name;
    /**     
     * @ORM\OneToMany(targetEntity="App\Office\Entity\SkillSet", mappedBy="office")
     */
    public $skillSet = [];
    /**     
     * @ORM\OneToMany(targetEntity="App\Office\Entity\Management", mappedBy="office")
     */
    public $management = [];
    /**
     * @ORM\OneToMany(targetEntity="App\Office\Entity\Staff", mappedBy="office")
     */
    public $staff = [];
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @param string $name
     */
    public function setName(string $name)
    {
        $this->name = $name;
    }

    /**
     * @return array
     */
    public function getSkillSets()
    {
        return $this->skillSet;
    }

    /**
     * @param array $skillSet
     */
    public function setSkillSets(array $skillSet)
    {
        $this->skillSet = $skillSet;
    }

    /**
     * @return array
     */
    public function getManagements()
    {
        return $this->management;
    }

    /**
     * @param array $management
     */
    public function setManagements(array $management)
    {
        $this->management = $management;
    }

    /**
     * @return array
     */
    public function getStaff()
    {
        return $this->staff;
    }

    /**
     * @param array $staff
     */
    public function setStaff(array $staff)
    {
        $this->staff = $staff;
    }

    /**
     * add new skillSet, merging with existing
     * @param array $skillSet
     */
    public function addSkillSets(array $skillSet)
    {
        $this->skillSet = array_merge($this->skillSet, $skillSet);
    }

    /**
     * @param int $management
     */
    public function addManagement(int $management)
    {
        $this->management[] = $management;
    }

    /**
     * @param int $staff
     */
    public function addStaff(int $staff)
    {
        $this->staff[] = $staff;
    }
}

1 Ответ

0 голосов
/ 07 ноября 2019

Не уверен насчет того, что вас попросили сделать. Если вы передаете свойства объекта по ссылке, вы должны настроить свой код следующим образом:

/**
 * @return array
 */
public function &getSkillSets(): array
{
    return $this->skillSet;
}

И где бы вы его ни использовали, оно должно быть:

$myValue = &$office->getSkillSets();

Вы можете прочитатьподробнее здесь: https://www.php.net/manual/en/language.references.return.php

Обратите внимание , что если одно из свойств уже является объектом, использование приведенного выше синтаксиса бесполезно, поскольку объекты по умолчанию передаются по ссылке в PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...