当前位置:  开发笔记 > 编程语言 > 正文

__construct用于什么功能?

如何解决《__construct用于什么功能?》经验,为你挑选了9个好方法。

我一直在注意__construct课程.我做了一些阅读和网上冲浪,但我找不到我能理解的解释.我刚刚开始使用OOP.

我想知道是否有人可以给我一个大概它是什么,然后一个简单的例子,它如何与PHP一起使用?



1> Jan Hančič..:

__construct在PHP5中引入了它,它是定义你的构造函数的正确方法(在PHP4中,你使用了构造函数的类的名称).您不需要在类中定义构造函数,但是如果您希望在对象构造上传递任何参数,那么您需要一个.

一个例子可能是这样的:

class Database {
  protected $userName;
  protected $password;
  protected $dbName;

  public function __construct ( $UserName, $Password, $DbName ) {
    $this->userName = $UserName;
    $this->password = $Password;
    $this->dbName = $DbName;
  }
}

// and you would use this as:
$db = new Database ( 'user_name', 'password', 'database_name' );

PHP手册中解释了其他所有内容:点击此处



2> Rob..:

__construct()是构造函数的方法名称.构造函数在创建后在对象上调用,是放置初始化代码等的好地方.

class Person {

    public function __construct() {
        // Code called for each new Person we create
    }

}

$person = new Person();

构造函数可以以正常方式接受参数,这些参数在创建对象时传递,例如

class Person {

    public $name = '';

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

}

$person = new Person( "Joe" );
echo $person->name;

与其他一些语言(例如Java)不同,PHP不支持重载构造函数(即,具有多个接受不同参数的构造函数).您可以使用静态方法实现此效果.

注意:我从(撰写本文时)接受的答案的日志中检索到了这一点.



3> Logan Serman..:

它是另一种声明构造函数的方法.你也可以使用类名,例如:

class Cat
{
    function Cat()
    {
        echo 'meow';
    }
}

class Cat
{
    function __construct()
    {
        echo 'meow';
    }
}

是等价的.只要创建了类的新实例,就会调用它们,在这种情况下,将使用以下行调用它们:

$cat = new Cat();


`cat()`和`__cosntruct()`在这个上下文中做同样的事情,但你必须小心:如果类`Cat`在命名空间中`Cat()`将不会被视为构造函数,因为PHP 5.3.3 .http://php.net/manual/en/language.oop5.decon.php

4> 小智..:

我认为这对理解构造函数的目的很重要.
即使在阅读了这里的回复后,我花了几分钟才意识到,这就是原因.
我养成了明确编码已启动或发生的所有内容的习惯.换句话说,这将是我的猫类以及我将如何称呼它.

class_cat.php

class cat {
    function speak() {
        return "meow";  
    }
}

somepage.php

include('class_cat.php');
mycat = new cat;
$speak = cat->speak();
echo $speak;

在@Logan Serman给出的"类猫"示例中,假设每次创建类"cat"的新对象时,您希望猫"喵"而不是等待您调用函数使其喵喵.

通过这种方式,我的思想明确地考虑了构造函数方法使用的含义,这使得一开始很难理解.


您的代码不包含任何"__construct(..)"
如果你有"编辑"权利,明智地使用它们......每个答案都有一些价值,也许不是你,而是对其他人,不要那么快就解雇一个人的答案,只是因为"你"并不觉得它有用.我碰巧发现这个解释在描述构造函数方法中的隐含性时非常有用.

5> 小智..:

构造函数是一个在类实例化时自动调用的方法.这意味着在没有单独的方法调用的情况下处理构造函数的内容.class关键字括号的内容将传递给构造函数方法.



6> 小智..:

我希望这个帮助:

firstname = $firstname;
          $this->lastname = $lastname;
          $this->age = $age;
        }

        // Creating a method (function tied to an object)
        public function greet() {
          return "Hello, my name is " . $this->firstname . " " . $this->lastname . ". Nice to meet you! :-)";
        }
      }

    // Creating a new person called "boring 12345", who is 12345 years old ;-)
    $me = new Person('boring', '12345', 12345);

    // Printing out, what the greet method returns
    echo $me->greet(); 
    ?>

更多信息您需要访问codecademy.com



7> James..:

__construct方法用于在第一次创建对象时传入参数- 这称为"定义构造函数方法",这是常见的事情.

但是,构造函数是可选的 - 如果您不想在对象构造时传递任何参数,则不需要它.

所以:

// Create a new class, and include a __construct method
class Task {

    public $title;
    public $description;

    public function __construct($title, $description){
        $this->title = $title;
        $this->description = $description;
    }
}

// Create a new object, passing in a $title and $description
$task = new Task('Learn OOP','This is a description');

// Try it and see
var_dump($task->title, $task->description);

有关构造函数的更多详细信息,请参阅手册.



8> 小智..:
class Person{
 private $fname;
 private $lname;

 public function __construct($fname,$lname){
  $this->fname = $fname;
  $this->lname = $lname;
 }
}
$objPerson1 = new Person('john','smith');


这不解释,它只是代码.请添加一些文字,解释根据问题发生的事情.

9> 小智..:

__construct在创建新对象时总是被调用,或者在初始化发生时被调用。它适用于对象使用前可能需要的任何初始化。__construct方法是类中执行的第一个方法。

    class Test
    {
      function __construct($value1,$value2)
      {
         echo "Inside Construct";
         echo $this->value1;
         echo $this->value2;
      }
    }

//
  $testObject  =  new Test('abc','123');

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有