2015-05-27 13 views
6

Tôi đã thực hiện một số nghiên cứu về các đối tượng trong PHP. Tất cả các ví dụ tôi đã thấy sử dụng constructor đối tượng ngay cả trên các đối tượng của riêng họ. PHP có buộc bạn phải làm điều này và nếu có thì tại sao?Có/Tại sao php buộc bạn sử dụng hàm tạo đối tượng

Ví dụ:

<?php 
    class Person { 
    public $isAlive = true; 
    public $firstname; 
    public $lastname; 
    public $age; 

    public function __construct($firstname, $lastname, $age) { 
     $this->firstname = $firstname; 
     $this->lastname = $lastname; 
     $this->age = $age; 
    } 

    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); 

    echo $me->greet(); 
    ?> 

Nhưng nếu tôi làm điều này:

<?php 
class Person { 
    public $isAlive = true; 
    public $firstname; 
    public $lastname; 
    public $age; 
} 
$person->firstname = "John"; 
echo $person->firstname; 
?> 

tôi nhận được một mã lỗi http 500. (ví dụ: Mã của tôi bị rơi).

Trả lời

3

Bạn đang liên kết không chính xác chức năng __construct() với cách bạn khởi tạo lớp/đối tượng.

Bạn không để sử dụng chức năng __construct() (tùy chọn). Tuy nhiên, trước khi bạn có thể sử dụng các phương pháp của lớp học, trước tiên bạn phải do tạo một phiên bản của lớp đó.

<?php 
class Person { 
    public $isAlive = true; 
    public $firstname; 
    public $lastname; 
    public $age; 
} 
$person = new Person(); //Add this line 
$person->firstname = "John"; 
echo $person->firstname; 
?> 
3

Vì định nghĩa lớp chính xác là định nghĩa.

Để tạo một thể hiện của một lớp (một đối tượng thực tế), bạn phải khởi tạo nó. Bạn có thể trong thực tế nhanh chóng nhiều đối tượng khác nhau/trường hợp của cùng một lớp.

Và bạn không cần phải xác định một phương pháp xây dựng ..... nhưng bạn phải nhanh chóng sử dụng new

2

Có hai cách để làm việc với các biến lớp. 1. biến nên tĩnh công cộng như:

class Person { 
    public $isAlive = true; 
    public static $firstname; 
    public $lastname; 
    public $age; 
} 
Person::$firstname = "John"; 
echo Person::$firstname; 

2. truy cập vào biến thông qua các đối tượng lớp

class Person { 
    public $isAlive = true; 
    public $firstname; 
    public $lastname; 
    public $age; 
} 
$person->firstname = "John"; 
echo $person->firstname; 

Bằng cách này, PHP có thể tạo ra các đối tượng bằng cách riêng của mình php 5,5 ít nhất . Mã của bạn không bị lỗi. Nó chỉ đưa ra một cảnh báo: Cảnh báo: Tạo đối tượng mặc định từ giá trị trống trong ...

Vì vậy, tại sao? Đây là cách PHP làm việc với bộ nhớ. Trong trường hợp đầu tiên, tĩnh có nghĩa là bộ nhớ đã được cấp phát php cho biến và bạn có thể làm việc với nó. Trường hợp thứ hai. Bằng cách sử dụng lệnh MỚI, bạn cung cấp hướng dẫn cho php để cấp phát bộ nhớ và tải lớp vào nó. Vì vậy, sau khi lớp đã được tạo, bạn có quyền truy cập vào var.

Trong trường hợp thứ ba, PHP đang tự gọi người mới và báo cho bạn biết. Tôi mạnh mẽ không khuyên bạn nên đếm trên hành vi mặc định php. LUÔN LUÔN tạo một đối tượng theo cách rõ ràng

Các vấn đề liên quan