Một đặc điểm có thể sử dụng một đặc điểm khác không?
PHP Traits về cơ bản là một cơ chế để “sao chép/dán” mã trong khi nó đang chạy. Nó chỉ là một tập hợp các thủ tục mà bạn có thể sử dụng trong một lớp khác. Các đặc điểm, như các lớp trừu tượng, không thể tự xây dựng Show
Điều này có nghĩa là đặc điểm được sao chép vào các lớp con Bài đăng và Nhận xét để khi bạn tạo một trường hợp mới, nó sẽ kế thừa đặc điểm đó Kết quả là, bạn có thể loại bỏ sự trùng lặp mã trong khi giảm thiểu các vấn đề liên quan đến việc kế thừa nhiều – Đặc điểm PHP. Các tính năng của một Trait
Đặc điểm PHP. Nhiều đặc điểm kế thừaMột lớp có thể sử dụng nhiều đặc điểm. Trong lớp IDE, ví dụ sau cho thấy cách sử dụng một số đặc điểm Đối với mục đích trình diễn, nó mô phỏng mô hình biên dịch C trong PHP class Brown{hàm công khai sayhello() {echo “Xin chào”;<class Brown{ public function sayhello() { echo “Xin chào”; } } Trait for Browns { public function sayfor() { echo “Browns”; } } class Sample extends Browns { use for Browns; public function Browns() { echo “nBrowns”; } } $test = new Sample(); $test->sayhello(); $test->sayfor(); $test->Browns(); ?> – Di truyền nhiều tính trạng. Cách tạo một ví dụ thay thếChúng ta có thể sử dụng ví dụ trên để xây dựng một ví dụ thay thế
Hàm log() giống nhau cho cả FileLogger and DatabaseLogger characteristics. Bạn có thể khắc phục xung đột tên phương thức trong lớp Logger bằng cách chỉ ra rằng phương thức log() của FileLogger Trait sẽ được sử dụng thay vì Database Logger Còn trường hợp bạn sử dụng cả hai kỹ thuật log() của đặc điểm FileLogger và DatabaseLogger thì sao? Phương thức phải được triển khai bởi tất cả các lớp sử dụng Đặc điểm này. Thay vào đó, PHP sẽ đưa ra một lỗi cho biết rằng một phương thức trừu tượng PHP Trait bị thiếu trong mã Xây dựng đặc điểm PHPCác đặc điểm trong PHP, không giống như Scala, có thể có một hàm tạo đặc điểm PHP. Tuy nhiên, chúng phải được thông báo công khai – một lỗi sẽ được đưa ra nếu nó là riêng tư hoặc được bảo vệ Mặt khác, nên tránh sử dụng hàm tạo đặc điểm PHP trong các đặc điểm vì nó có thể tạo ra các xung đột không mong muốn trong các lớp soạn thảo Một cách giải quyết ở đây là sử dụng các lớp đặc điểm như Mixin và bạn sẽ có thể cắt giảm việc sao chép mã Đặc điểm PHP. Điều gì phân biệt các đặc điểm từ các lớp trừu tượng?Một đặc điểm trừu tượng của PHP không dựa trên tính kế thừa, so với một lớp trừu tượng. Xem xét điều gì sẽ xảy ra nếu các lớp Bài đăng và Nhận xét phải được dẫn xuất từ một đối tượng AbstractSocial. Chúng tôi gần như chắc chắn sẽ muốn làm điều gì đó hơn là xuất bản nhận xét và bài đăng trên các nền tảng truyền thông xã hội, vì vậy cuối cùng chúng tôi sẽ kết thúc với nội dung như thế này // Chứng minh chương trình PHP hoạt động// của giao diện. giao diện MyInterface{hàm công khai examplemethod1();hàm công khai examplemethod2();}hàm công khai examplemethod2(){echo “ExampleMethod2 Called”. “n”;}}$ob = new MyClass;$ob// PHPprogram to demonstrate working // of interface. interface MyInterface{ public function examplemethod1(); public function examplemethod2(); } class MyClass implements MyInterface{ public function examplemethod1(){ echo “ExampleMethod1 Called” . “n”; } public function examplemethod2(){ echo “ExampleMethod2 Called”. “n”; } } $ob = new MyClass; $ob->examplemethod1(); $ob->examplemethod2(); ?> Nguồn gốc phức tạp này không chỉ khó chịu mà còn tăng thêm độ phức tạp khi một đối tượng đơn giản hơn thiếu cấu trúc kế thừa tương tự Chẳng hạn, nếu tất cả chúng ta đều có một lớp Massage không hỗ trợ tương tác xã hội, thì chúng ta cần một cây kế thừa hơi khác cho mục đó Điều gì phân biệt các đặc điểm từ các giao diện?Các đặc điểm giống với giao diện theo phong cách. Không có lớp xác định, cả đặc điểm và giao diện thường đơn giản, ngắn gọn và ít tiện ích. Tuy nhiên, sự khác biệt giữa hai là rất quan trọng Một giao diện giống như một lời hứa nói rằng, “đối tượng này có thể thực hiện hành động này”, trong khi một đặc điểm là khả năng hoàn thành công việc Xem xét tình huống sau giao diện Người{ public function welcome(); public function eat($food);< } Trait EatingTrait { public function eat($food) { $this->putInMouth($food); } private function putInMouth($food) { // digest delicious food } } Ưu điểm của việc có đặc điểm là gì?Các đặc điểm có lợi thế là giảm trùng lặp mã đồng thời tránh thừa kế lớp phức tạp có thể đúng hoặc không đúng trong ứng dụng của bạn Đặc điểm PHP. Nhược điểm của nó là gì?Có một số nhược điểm khi sử dụng các đặc điểm là tốt Khá đơn giản để tạo các lớp cồng kềnh với quá nhiều trách nhiệm vì các đặc điểm. Một đặc điểm về cơ bản là một cơ chế để “dán” mã từ loại này sang loại khác Khá dễ dàng để đi chệch khỏi khái niệm trách nhiệm duy nhất bằng cách nhanh chóng thêm một tập hợp các phương thức khác vào một lớp Các nhược điểm khác của việc sử dụng các đặc điểm bao gồm không nhìn thấy tất cả các phương thức của lớp khi xem mã nguồn, xung đột phương thức và lặp lại logic Đặc điểm PHP Các trường hợp sử dụng. Các tình huống phổ biếnVì vậy, điều gì có thể là một kịch bản cổ điển trong đó việc sử dụng một Đặc điểm sẽ có lợi? Theo chúng tôi, các đặc điểm là một kỹ thuật tuyệt vời để sử dụng lại mã giữa một lớp gồm các lớp con có liên quan không nên kế thừa từ cùng một kiểu dữ liệu trừu tượng – Kịch bản chung đầu tiênGiả sử chúng ta có một ứng dụng xã hội và giả sử chúng ta có các đối tượng để
Theo nghĩa nhất, những đối tượng này có thể thay thế được trong hệ thống của chúng tôi vì chúng thường được tạo và liên kết với những người khác nhau Mặt khác, các đối tượng tin nhắn là các tin nhắn riêng tư không được công khai, trong khi Bài đăng, Ảnh, Ghi chú và Liên kết đều là các đối tượng trực tuyến được chia sẻ giữa các cá nhân Khi bạn lần đầu tiên tìm hiểu về các đặc điểm như một công cụ tùy ý sử dụng, có thể khó xác định liệu một tình huống có bắt buộc phải sử dụng một đặc điểm hay không, một trong nhiều cách khắc phục khả thi khác Chúng tôi nghĩ rằng đây là cơ hội tốt để kiểm tra xem những người khác đã sử dụng chiến lược này như thế nào trong cộng đồng Nguồn mở khi bạn ở trong trường hợp này – Kịch bản chung thứ haiGói Thu ngân của Laravel, theo quan điểm của chúng tôi, là một dự án Nguồn mở sử dụng tốt các đặc điểm Gói Thu ngân mở rộng khả năng của các bộ phận Eloquent của bạn để dễ dàng quản lý đăng ký trong doanh nghiệp SaaS của bạn Một giải pháp khác là sửa đổi đối tượng Thu ngân để bạn có thể kế thừa các phương thức bạn muốn. Đây cũng là một lựa chọn tồi nếu bạn muốn giới thiệu các phương thức xác thực từ một gói cho các mô hình của mình? Khi bạn, đồng nghiệp của bạn hoặc bản thân trong tương lai của bạn quay lại mã này trong tương lai, bạn sẽ có một lịch sử thừa kế rối rắm khiến nó trở nên cồng kềnh và rối rắm Mô-đun Verification cho Eloquent của Laravel cũng sử dụng đặc điểm một cách tuyệt vời. Bằng cách kết hợp một đặc điểm trong gói này, bạn có thể phát triển các mẫu xác thực tự động Phương pháp ghi đè đặc điểm PHPKhi có một đặc điểm PHP và một lớp sử dụng nó, chúng tôi chọn gọi phương thức của đặc điểm ban đầu cũng như ghi đè phương thức của một đặc điểm Chúng ta sẽ phải làm cái này như thế nào? Vì một từ khóa có thể được sử dụng để đổi tên phương thức của một đặc điểm, chúng tôi cũng có thể điều chỉnh tính khả dụng của nó để làm cho nó ẩn trong mạng công cộng của lớp Tính toán các đặc điểm mở rộng và ghi đè trong thủ tục PHP. Việc sử dụng các đặc điểm của PHP để chia sẻ các thủ tục giữa các lớp rất thuận tiện Tuy nhiên, có những lúc chúng ta cần mở rộng hoặc ghi đè một kỹ thuật được khai báo trong một đặc điểm được kết nối với một lớp – PHP Override Trait Method Ví dụTraitA {function calc($v) { return $v+1; }}}}}}}}}}} } class MyClass { use A { calc as protected Traitcalc; } function calc($v) { $v++; return $this->Traitcalc($v); } } Đặc điểm PHP. Các vấn đề với việc khai báo nhiều đặc điểm trong một lớpNhiều đặc điểm có thể được khai báo trong một lớp. Giải pháp đầu tiên là chỉ sao chép và dán các trường hợp hàm từ hướng dẫn để tự xây dựng các phương thức Đây không phải là một cách tiếp cận thông minh vì bạn có nguy cơ gây ra lỗi do sao chép mã không đúng cách và bạn sẽ phải xem qua tất cả các đối tượng của mình và thay thế mã đã sao chép mỗi khi gói máy in được cập nhật Một giải pháp khác là sửa đổi đối tượng máy in để bạn có thể kế thừa các phương thức bạn yêu cầu Đây cũng là một lựa chọn tồi, vì nếu bạn muốn kết hợp các phương thức xác thực từ một gói vào các mô hình của mình thì sao? Khi bạn, đồng nghiệp hoặc fuzz của bạn tạo ra một dòng thừa kế phức tạp, mã của bạn sẽ trở nên cồng kềnh và rối rắm Phần kết luậnMặc dù một Đặc điểm có thể khắc phục khó khăn hiện tại trong mã của bạn, nhưng bố cục có thể là giải pháp thực sự cho vấn đề của bạn. Trong mọi trường hợp, bạn nên ghi lại những điều quan trọng mà chúng tôi đã thảo luận trong bài viết của chúng tôi cũng có thể giúp ích cho bạn
Rõ ràng, PHP Traits có thể giúp bạn tiết kiệm rất nhiều thời gian khỏi việc viết đi mã lại cùng một thứ. Với hướng dẫn được tạo ra một cách chuyên nghiệp của chúng tôi, bạn sẽ có thể thành thạo chúng ngay lập tức Đánh giá bài viết này
Vị trí là tất cả Vị trí là tất cả. Tài nguyên Go-To của bạn để Tìm hiểu & Xây dựng. CSS, JavaScript, HTML, PHP, C++ và MYSQL Chúng ta có thể sử dụng nhiều đặc điểm trong PHP không?PHP không hỗ trợ đa kế thừa nhưng bằng cách sử dụng Giao diện trong PHP hoặc sử dụng Đặc điểm trong PHP thay vì lớp, chúng ta có thể triển khai nó.
Một đặc điểm có thể mở rộng một đặc điểm PHP không?Quy ước đặt tên một đặc điểm bằng hậu tố Trait khá phổ biến, vì vậy đây có thể là điều mà bạn nên cân nhắc áp dụng. Không giống như một lớp, điều quan trọng cần nhớ là bạn không thể thêm phần mở rộng hoặc triển khai vào một đặc điểm . Bạn cũng không thể khởi tạo một đặc điểm.
Có được phép tạo một giao diện sử dụng các đặc điểm không?Đặc điểm không thể triển khai giao diện . Một đặc điểm cho phép cả hai lớp sử dụng nó cho yêu cầu giao diện chung. Nó hỗ trợ việc sử dụng các phương thức trừu tượng.
Một đặc điểm có thể có các thuộc tính PHP không?Các đặc điểm có thể chứa các phương thức (như sayHello()) và các thuộc tính (như $name) . Các đặc điểm cũng hỗ trợ các toán tử hiển thị (công khai, được bảo vệ và riêng tư), các phương thức và thuộc tính tĩnh cũng như các toán tử lớp như cha mẹ. , bản thân. và $này. Các lớp PHP có thể sử dụng các đặc điểm và bao gồm mã của các đặc điểm đó. |