我一直在注意__construct
课程。我做了一些阅读和网上冲浪,但我找不到我能理解的解释。我刚刚开始使用OOP。
我想知道是否有人可以让我对它是什么有一个概括,然后是一个如何与PHP一起使用的简单例子?
答案 0 :(得分:274)
__construct
,它是定义你的构造函数的正确方法(在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手册中解释了其他所有内容:click here
答案 1 :(得分:46)
__construct()
是constructor的方法名称。构造函数在创建后在对象上调用,是放置初始化代码等的好地方。
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不支持重载构造函数(即,具有多个接受不同参数的构造函数)。您可以使用静态方法实现此效果。
注意:我是从(撰写本文时)接受的答案的日志中检索到的。
答案 2 :(得分:19)
它是另一种声明构造函数的方法。您也可以使用类名,例如:
class Cat
{
function Cat()
{
echo 'meow';
}
}
和
class Cat
{
function __construct()
{
echo 'meow';
}
}
是等同的。只要创建了类的新实例,就会调用它们,在这种情况下,将使用以下行调用它们:
$cat = new Cat();
答案 3 :(得分:16)
我认为这对于理解构造函数的目的很重要 即使在阅读了这里的回复后,我花了几分钟才意识到,这就是原因 我养成了明确编码已启动或发生的所有内容的习惯。换句话说,这将是我的猫类以及我将如何称呼它。
<强> class_cat.php 强>
class cat {
function speak() {
echo "meow";
}
}
<强> somepage.php 强>
include('class_cat.php');
mycat = new cat;
$speak = cat->speak();
echo $speak;
在@Logan Serman给出的“类猫”示例中,假设每次创建类“cat”的新对象时,您都希望猫“喵”而不是等待您调用函数来实现它喵。
通过这种方式,我的思维明确地考虑了构造函数方法使用的含义,这使得一开始很难理解。
答案 4 :(得分:12)
构造函数是一个在类实例化时自动调用的方法。这意味着在没有单独的方法调用的情况下处理构造函数的内容。 class关键字括号的内容将传递给构造函数方法。
答案 5 :(得分:10)
我希望这个帮助:
<?php
// The code below creates the class
class Person {
// Creating some properties (variables tied to an object)
public $isAlive = true;
public $firstname;
public $lastname;
public $age;
// Assigning the values
public function __construct($firstname, $lastname, $age) {
$this->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
答案 6 :(得分:9)
当{em>首先创建一个对象时,__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);
有关构造函数的更多详细信息,请参阅the manual。
答案 7 :(得分:7)
class Person{
private $fname;
private $lname;
public function __construct($fname,$lname){
$this->fname = $fname;
$this->lname = $lname;
}
}
$objPerson1 = new Person('john','smith');
答案 8 :(得分:5)
__构造总是在创建新对象时调用,或者在初始化时调用它们。它适用于对象在使用之前可能需要的任何初始化。 __construct方法是在类中执行的第一个方法。
class Test
{
function __construct($value1,$value2)
{
echo "Inside Construct";
echo $this->value1;
echo $this->value2;
}
}
//
$testObject = new Test('abc','123');
答案 9 :(得分:3)
我相信函数__construct () {...}
是一段代码,可以一次又一次地重复使用,代替TheActualFunctionName () {...}
。
如果更改CLASS名称,则不必在代码中进行更改,因为泛型__construct始终引用实际的类名...无论它是什么。
您编码较少......或?
答案 10 :(得分:3)
__ construct是一种在使用之前初始化新对象的方法 http://php.net/manual/en/language.oop5.decon.php#object.construct
答案 11 :(得分:3)
注意:如果子类定义了构造函数,则不会隐式调用父构造函数。为了运行父构造函数,需要在子构造函数中调用parent::__construct()
。如果子进程没有定义构造函数,那么它可以像普通的类方法一样从父类继承(如果它没有被声明为私有)。
答案 12 :(得分:0)
__ construct只是初始化一个类。假设您有以下代码;
Class Person {
function __construct() {
echo 'Hello';
}
}
$person = new Person();
//the result 'Hello' will be shown.
我们没有创建其他函数来回显单词“ Hello”。它只是表明关键字__construct在启动类或对象时非常有用。
答案 13 :(得分:0)
构造函数允许您在创建对象时初始化对象的属性。
如果创建__construct()函数,则在从类创建对象时,PHP将自动调用此函数。
答案 14 :(得分:-1)
让我先不使用方法来解释 wherePivot()
... 关于 __construct()
的一件事是,它是一个内置函数,让我在 PHP 中将其称为方法。正如我们有 __construct()
表示程序一样,print_r()
是 OOP 的内置。
话虽如此,让我们来探讨一下为什么应该使用这个名为 __construct()
的函数。
__construct()
/*=======Class without __construct()========*/
class ThaddLawItSolution
{
public $description;
public $url;
public $ourServices;
/*===Let us initialize a value to our property via the method set_name()==== */
public function setName($anything,$anythingYouChoose,$anythingAgainYouChoose)
{
$this->description=$anything;
$this->url=$anythingYouChoose;
$this->ourServices=$anythingAgainYouChoose;
}
/*===Let us now display it on our browser peacefully without stress===*/
public function displayOnBrowser()
{
echo "$this->description is a technological company in Nigeria and our domain name is actually $this->url.Please contact us today for our services:$this->ourServices";
}
}
//Creating an object of the class ThaddLawItSolution
$project=new ThaddLawItSolution;
//=======Assigning Values to those properties via the method created====//
$project->setName("Thaddlaw IT Solution", "https://www.thaddlaw.com", "Please view our website");
//===========Let us now display it on the browser=======
$project->displayOnBrowser();
让您的生活变得非常轻松,想象一下我通过该方法为这些属性赋值所花费的时间。从上面的代码中,我首先创建了一个对象,然后将值分配给第二个属性,最后在浏览器上显示它。但是在创建对象时使用 __construct()
,即 __construct()
您会在创建对象时立即为该方法赋值,即
$project= new ThaddLawItSolution;
//====让我们现在使用__constructor====
只需删除名为 $project=new ThaddLawItSolution("Thaddlaw IT Solution", "https://www.thaddlaw.com","Please view our website");
的方法并放入 setName
,然后在创建对象时立即分配值。这就是整个 __construct();
方法背后的要点。但请注意,这是一个内置的方法或函数