首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php通过引用传递对象,更新类

php通过引用传递对象,更新类
EN

Stack Overflow用户
提问于 2019-11-07 05:02:05
回答 1查看 41关注 0票数 1

我有一个正在尝试更新的类,我被要求通过引用来演示传递对象,但我不确定这与下面的类有什么关系,有人能给我一些指示吗?我想我已经准备好用像getManegement()这样的方法来做这件事了,如果你能告诉我需要做什么的一些想法,也许是一些链接或代码示例,那就太好了。

代码语言:javascript
复制
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;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-11-07 05:12:26

不确定你被要求做什么。如果你想通过引用传递对象属性,你应该像这样调整你的代码:

代码语言:javascript
复制
/**
 * @return array
 */
public function &getSkillSets(): array
{
    return $this->skillSet;
}

无论你在哪里使用它,都应该是:

代码语言:javascript
复制
$myValue = &$office->getSkillSets();

你可以在这里阅读更多内容:https://www.php.net/manual/en/language.references.return.php

注意,如果其中一个属性已经是一个对象,那么使用上面的语法是没有用的,因为在中,默认情况下对象是通过引用传递的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58738422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档