【问题标题】:PHP declaring object as array for function parameter [duplicate]PHP将对象声明为函数参数的数组[重复]
【发布时间】:2018-09-22 13:35:30
【问题描述】:

我对 PHP 很陌生。我在将对象声明为函数参数的数组时遇到问题。在 Java 中,我只是使用 public void methodName (List<Object> listVariableName){} 来传递许多对象的列表。

我对 PHP 进行了一些研究,其中一个答案建议将 array 放在方法参数声明中,就像这样 function myFunction($a, array Object $obj){}

目前,我有一个名为Lesson的类

class Lesson implements JsonSerializable{
private $lessonId;
    private $lessonNo;
    private $lessonTitle;
    private $isLessonActive;
    private $isLessonRemoved;

    //getters and setter here....
}

然后我尝试声明一个名为addTopicLesson的方法

function addTopicLesson(Topic $topic, array Lesson $lesson){

}

但是,array Lesson $lesson 出现错误

有 1 个主题和许多课程。如何实现或定义方法签名?

我找到了this,但我想知道是否有比调用自身更好的方法。

如果有任何建议,我将不胜感激。

谢谢。

【问题讨论】:

  • 你不能输入提示array of ObjectsarrayObject

标签: php arrays


【解决方案1】:

List<T> 不是数组。这是一个利用泛型类型机制的列表。

PHP 中没有泛型。您只能键入提示 array,但您无法在方法声明级别控制其中的内容。

【讨论】:

    【解决方案2】:
    function addTopicLesson(Topic $topic,array $lessons)
    {
      foreach($lessons as $lesson) 
      {
        addLesson($page);
      }
    }
    
    function addLesson(Lesson $lesson)
    {
    }
    

    【讨论】:

    • 这样你只能传递Lesson对象的一个​​实例。它将拒绝接受一个数组。
    猜你喜欢
    • 2023-04-06
    • 2020-06-01
    • 1970-01-01
    • 2018-02-12
    • 2019-03-30
    • 2014-08-04
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多