Có lý do nào để đặt giá trị cho các biến trong hàm tạo của một lớp thay vì khi bạn khai báo chúng không? Tôi nhận ra rằng bạn không thể chuyển dữ liệu vào các biến nếu bạn cố gắng đặt chúng khi chúng được khai báo, nhưng điều gì sẽ luôn giống nhau (tôi giả sử 'luôn luôn' là một yêu cầu khó khăn để thực hiện)?Tại sao đặt các biến bên trong cấu trúc của một lớp PHP khi bạn có thể đặt chúng khi chúng được khai báo?
class variables_set_outside_constructor
{
private $admin_name = 'jeff';
private $current_working_directory = get_cwd();
function __construct() {}
}
như trái ngược với điều này:
class variables_set_inside_constructor
{
private $admin_name;
private $current_working_directory;
function __construct()
{
$this->admin_name = 'jeff';
$this->current_working_directory = get_cwd();
}
}
những ưu điểm và nhược điểm của thiết lập các giá trị trong các nhà xây dựng so với khi chúng được khai báo là gì? Tôi cũng tò mò về bất kỳ khía cạnh bất khả tri ngôn ngữ nào.
Tôi không chắc tôi hiểu những gì bạn đang yêu cầu. Bạn có thể cho chúng tôi một ví dụ về mỗi kỹ thuật mà bạn đang cố gắng so sánh không? –
Tôi đang làm phiền điều này bởi vì tôi là một lập trình viên có kinh nghiệm, bằng cách nào đó không bao giờ học được lý do tại sao nó sẽ là xấu để khai báo những thứ bên ngoài một nhà xây dựng. Tôi ngạc nhiên vì rất nhiều người nhảy múa quanh điểm của câu hỏi này chỉ để cho bạn biết những điều không liên quan về ví dụ của bạn. Nhưng một ví dụ tốt hơn có thể là giá trị mặc định. Giống như một trò chơi - int level = 1; thì hàm tạo có thể ghi đè lên điều này, nhưng ít nhất nó sẽ luôn có một giá trị mặc định. Ngay cả sau khi đọc điều này tôi vẫn không chắc chắn về một câu trả lời chính thức. Tôi đoán tôi sẽ chỉ tiếp tục tuyên bố trong lớp sau đó populating trên xây dựng. –
Bạn có thể muốn kiểm tra lại ví dụ thứ hai của mình. (Trên thực tế, hãy kiểm tra cả hai - 'class X() {}' là cú pháp không hợp lệ. Nhưng ...) Giá trị mặc định của thuộc tính phải là chữ (hoặc có thể là hằng số), cuối cùng tôi nghe thấy. – cHao