Thuộc tính @ trong PHP là gì?

Khái niệm thuộc tính và thuộc tính đặt ra nhiều câu hỏi cho những người làm việc với lập trình hướng đối tượng, bởi vì về mặt khái niệm, chúng sẽ bình đẳng với nhau

Theo Fowler (2005), một thuộc tính là một đặc điểm cấu trúc của một lớp,. e, nó xác định một cách hiệu quả đối tượng là gì. Nhưng thuộc tính khác cũng có thể đại diện cho những gì lớp có thể làm

Để làm cho nó rõ ràng để hiểu, chúng ta hãy đi đến một ví dụ thực tế. lớp 'nhân viên' có thuộc tính 'tên' và thuộc tính 'thẻ', trong trường hợp này được biểu diễn bằng lớp thứ hai lưu thông tin thẻ của nhân viên

lớp nhân viên

{

$ Tên = “”;

$ Thẻ = Thẻ mới();

}

Thuộc tính 'Tên' được biểu thị bằng một chuỗi, vì thuộc tính 'Thẻ' được biểu thị bằng một đối tượng và đó là điểm khác biệt chính giữa chúng

Bất cứ khi nào một phần thông tin được xử lý một cách đơn giản, chẳng hạn như một giá trị số nguyên hoặc chuỗi, nó có thể được coi là một thuộc tính. Tuy nhiên, khi nó được đại diện bởi một đối tượng có thuộc tính, thuộc tính và phương thức, thì nó sẽ được coi là thuộc tính

Sự khác biệt này đôi khi tinh tế, không được chú ý trong nhiều phân tích. Khi thực hiện mô tả quy trình, cần đánh giá xem thuật ngữ được sử dụng có đúng không, trong phạm vi hiểu biết chung của nhóm

Cuối cùng, chúng ta có thể nói rằng thuộc tính xác định các đặc điểm xác định đối tượng thực sự là gì và thuộc tính có thể xác định nó là gì và cả các tính năng của nó, do đó được kế thừa từ một đối tượng phụ quy định thuộc tính đó

Xem thêm nội dung trên blog của chúng tôi
Tìm hiểu tất cả về Scriptcase

Bởi Vỏ tập lệnh,

1 Tháng sáu 2015

Chia sẻ bài đăng này

Facebook

Twitter

liên kết

a

Bạn cũng có thể thích…

Mã thấp. đó là tương lai, không phải là một xu hướng đã qua

Các công cụ mã thấp cho phép các chuyên gia phát triển các hệ thống nhanh, hiệu quả và chính xác. Hạ mã ha

Có gì mới trong PHP 8. 1

Trong bài viết này, chúng ta sẽ nói một chút về các tính năng, thay đổi và cải tiến mới sắp ra mắt.

9 Xu hướng phát triển web và CNTT cho năm 2022

Hãy xem trong bài viết này chín xu hướng CNTT và phát triển web quan trọng mà bạn nên theo dõi trong

Trong PHP, các biến thành viên của lớp còn được gọi là thuộc tính. Các biến này là một phần của định nghĩa lớp và được sử dụng để biểu diễn trạng thái của một thể hiện của lớp (i. e. , để phân biệt một thể hiện của lớp này với một thể hiện khác). Trong thực tế, bạn có thể thường muốn xử lý việc đọc hoặc viết các thuộc tính theo những cách đặc biệt. Ví dụ: bạn có thể luôn muốn cắt một chuỗi khi nó được gán cho thuộc tính label. Bạn có thể sử dụng đoạn mã sau để đạt được nhiệm vụ này

$object->label = trim($label);

Hạn chế của đoạn mã trên là bạn sẽ phải gọi trim() ở mọi nơi trong mã của mình, nơi bạn có thể đặt thuộc tính label. Nếu trong tương lai, thuộc tính label có một yêu cầu mới, chẳng hạn như chữ cái đầu tiên phải được viết hoa, bạn sẽ lại phải sửa đổi từng đoạn mã gán giá trị cho label. Việc lặp lại mã dẫn đến lỗi và là điều bạn muốn tránh càng nhiều càng tốt

Để giải quyết vấn đề này, Yii giới thiệu một lớp cơ sở gọi là yii\base\BaseObject hỗ trợ xác định các thuộc tính dựa trên các phương thức của lớp getter và setter. Nếu một lớp cần chức năng đó, nó sẽ mở rộng từ yii\base\BaseObject hoặc từ một lớp con

Thông tin. Gần như mọi lớp cốt lõi trong khung công tác Yii đều mở rộng từ yii\base\BaseObject hoặc một lớp con. Điều này có nghĩa là bất cứ khi nào bạn nhìn thấy một getter hoặc setter trong một lớp lõi, bạn có thể sử dụng nó như một thuộc tính

Phương thức getter là phương thức có tên bắt đầu bằng từ get; . Tên sau tiền tố get hoặc set xác định tên của thuộc tính. Ví dụ: getter

namespace app\components;

use yii\base\BaseObject;

class Foo extends BaseObject
{
    private $_label;

    public function getLabel()
    {
        return $this->_label;
    }

    public function setLabel($value)
    {
        $this->_label = trim($value);
    }
}
1 và/hoặc setter
namespace app\components;

use yii\base\BaseObject;

class Foo extends BaseObject
{
    private $_label;

    public function getLabel()
    {
        return $this->_label;
    }

    public function setLabel($value)
    {
        $this->_label = trim($value);
    }
}
2 xác định thuộc tính có tên label, như được hiển thị trong đoạn mã sau

namespace app\components;

use yii\base\BaseObject;

class Foo extends BaseObject
{
    private $_label;

    public function getLabel()
    {
        return $this->_label;
    }

    public function setLabel($value)
    {
        $this->_label = trim($value);
    }
}

Để rõ ràng, các phương thức getter và setter tạo thuộc tính label, trong trường hợp này nội bộ đề cập đến một thuộc tính riêng có tên

namespace app\components;

use yii\base\BaseObject;

class Foo extends BaseObject
{
    private $_label;

    public function getLabel()
    {
        return $this->_label;
    }

    public function setLabel($value)
    {
        $this->_label = trim($value);
    }
}
5

Các thuộc tính được xác định bởi getters và setters có thể được sử dụng như các biến thành viên của lớp. Sự khác biệt chính là khi thuộc tính đó được đọc, phương thức getter tương ứng sẽ được gọi; . Ví dụ

Một thuộc tính được xác định bởi một getter không có setter chỉ được đọc. Cố gắng gán một giá trị cho một thuộc tính như vậy sẽ gây ra UnlimitedCallException. Tương tự, một thuộc tính được xác định bởi setter không có getter chỉ được ghi và việc cố gắng đọc một thuộc tính như vậy cũng sẽ gây ra ngoại lệ. Không phổ biến khi có các thuộc tính chỉ ghi

Có một số quy tắc đặc biệt và giới hạn đối với các thuộc tính được xác định thông qua getters và setters

  • Tên của các thuộc tính đó không phân biệt chữ hoa chữ thường. Ví dụ:
    namespace app\components;
    
    use yii\base\BaseObject;
    
    class Foo extends BaseObject
    {
        private $_label;
    
        public function getLabel()
        {
            return $this->_label;
        }
    
        public function setLabel($value)
        {
            $this->_label = trim($value);
        }
    }
    
    6 và
    namespace app\components;
    
    use yii\base\BaseObject;
    
    class Foo extends BaseObject
    {
        private $_label;
    
        public function getLabel()
        {
            return $this->_label;
        }
    
        public function setLabel($value)
        {
            $this->_label = trim($value);
        }
    }
    
    7 giống nhau. Điều này là do tên phương thức trong PHP không phân biệt chữ hoa chữ thường
  • Nếu tên của một thuộc tính như vậy giống với một biến thành viên của lớp, thì thuộc tính sau sẽ được ưu tiên. Ví dụ, nếu lớp
    namespace app\components;
    
    use yii\base\BaseObject;
    
    class Foo extends BaseObject
    {
        private $_label;
    
        public function getLabel()
        {
            return $this->_label;
        }
    
        public function setLabel($value)
        {
            $this->_label = trim($value);
        }
    }
    
    8 ở trên có một biến thành viên là label, thì phép gán label0 sẽ ảnh hưởng đến biến thành viên label;
  • Các thuộc tính này không hỗ trợ khả năng hiển thị. Phương thức getter hoặc setter xác định không có gì khác biệt nếu thuộc tính là công khai, được bảo vệ hoặc riêng tư
  • Các thuộc tính chỉ có thể được xác định bởi getters và/hoặc setters không tĩnh. Các phương thức tĩnh sẽ không được xử lý theo cách tương tự
  • Một cuộc gọi bình thường đến label3 không hoạt động để xác định các thuộc tính ma thuật. Bạn nên gọi hoặc tương ứng

Quay trở lại vấn đề được mô tả ở phần đầu của hướng dẫn này, thay vì gọi trim() ở mọi nơi mà giá trị label được gán, thì bây giờ chỉ cần gọi trim() trong setter

namespace app\components;

use yii\base\BaseObject;

class Foo extends BaseObject
{
    private $_label;

    public function getLabel()
    {
        return $this->_label;
    }

    public function setLabel($value)
    {
        $this->_label = trim($value);
    }
}
2. Và nếu một yêu cầu mới khiến nhãn phải được viết hoa ban đầu, thì phương pháp
namespace app\components;

use yii\base\BaseObject;

class Foo extends BaseObject
{
    private $_label;

    public function getLabel()
    {
        return $this->_label;
    }

    public function setLabel($value)
    {
        $this->_label = trim($value);
    }
}
2 có thể nhanh chóng được sửa đổi mà không cần chạm vào bất kỳ mã nào khác. Một thay đổi sẽ ảnh hưởng chung đến mọi nhiệm vụ đối với label

Thuộc tính trong PHP là gì?

Thuộc tính đôi khi được gọi là thuộc tính hoặc trường . Trong PHP, một thuộc tính đủ điều kiện bởi một trong các từ khóa xác định quyền truy cập, công khai, riêng tư hoặc được bảo vệ. Tên thuộc tính có thể là bất kỳ nhãn hợp lệ nào trong PHP. Giá trị của thuộc tính có thể khác nhau đối với từng thể hiện của lớp.

Làm cách nào để khai báo các thuộc tính của lớp trong PHP?

Các lớp có thể có các biến bên trong nó. Các biến đó được gọi là thuộc tính. Một thuộc tính là một biến PHP bình thường ở bất kỳ kiểu dữ liệu nào (số nguyên, chuỗi, mảng, đối tượng, v.v.). Trong các lớp, trước khi khai báo một biến, chúng ta nên thêm từ khóa khả năng hiển thị để xác định vị trí của biến đó .

Phương thức và thuộc tính trong PHP là gì?

PHP - Công cụ sửa đổi truy cập . Đây là mặc định. được bảo vệ - thuộc tính hoặc phương thức có thể được truy cập trong lớp và bởi các lớp dẫn xuất từ ​​lớp đó. private - thuộc tính hoặc phương thức CHỈ có thể được truy cập trong lớp

$this nghĩa là gì trong PHP?

$đây là một từ khóa dành riêng trong PHP tham chiếu đến đối tượng gọi . Nó thường là đối tượng mà phương thức thuộc về, nhưng có thể là đối tượng khác nếu phương thức được gọi tĩnh từ ngữ cảnh của đối tượng phụ. Từ khóa này chỉ áp dụng cho các phương pháp nội bộ.