dozabt4329 2017-06-11 17:54
浏览 81
已采纳

可以在php类中创建构造函数吗?

im work with php and mysql, sometimes i need instantiate my php class in data access layer for return objects, load list etc... but sometimes I use the class constructor and others do not.

Can i create doble constructor in a class?

example:

class Student {

private $id;
private $name;
private $course;

function __construct() {

}

//get set id and name

function setCourse($course) {
    $this->course = $course;
}


function getCourse() {
    $this->course = $course;
}

}

class Course {

private $id;
private $description;

function __construct($id) {
   this->id = $id;
}

//get set, id, description

}

In my access layer sometime I use the constructor in different ways for example:

        $result = $stmt->fetchAll();
        $listStudent = new ArrayObject();

        if($result != null) {

            foreach($result as $row) {

                $student = new Student();

                $student->setId($row['id']);
                $student->setName($row['name']);
                $student->setCourse(new Course($row['idcourse'])); //this works

                $listStudent ->append($sol);
            }
            }

But sometimes I need to use the constructor in another way, for example

$result = $stmt->fetchAll();
        $listCourses = new ArrayObject();

        if($result != null) {

            foreach($result as $row) {

                $course = new Course();  //but here not work, becouse Class course receives a id

                $course->setId($row['idcourse']);
                $course->setDescription($row['description']);

                $listCourses->append($sol);
            }
        }

My english is very bad, i hope you understand me

  • 写回答

2条回答 默认 最新

  • doushi7819 2017-06-11 18:03
    关注

    Use default arguments:

    class Course {
    
      private $id;
      private $description;
    
      function __construct($id = 0) {
        this->id = $id;
      }
    
      // getters and setters for id and description
    
    }
    

    Now, you can use it like that:

    $course = new Course(12); // works with argument
    

    or:

    $course = new Course(); // works without argument
    $course->setId(12);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 画CAD几张图片内容如下1111111111111111111111111111111111111111111
  • ¥15 基于python的电影系统推荐
  • ¥20 springmvc重定向和返回json
  • ¥15 数学建模——参会安排怎么做
  • ¥15 电脑键盘实现触摸功能
  • ¥25 matlab无法将表达式转换为双数组怎么解决?
  • ¥15 单片机汇编语言相关程序
  • ¥20 家用射频美容仪技术规格
  • ¥15 大家帮我看看为什么错了
  • ¥15 unity互动琴弦抖动效果