Hướng dẫn php use - sử dụng php
Xin chào tất cả mọi người. Hôm nay mình sẽ quay lại phần 2 trong bài viết về lập trình hướng đối tượng trong PHP. Trong phần 1 mình sẽ đề cập về ba vấn đề Các đặc điểm cơ bản của lập trình hướng đối tượng. Chúng được thể hiện như thế nào trong PHP, Sự khác biệt giữa Abstract Class và Interface và Thế nào là một hàm static, phân biệt cách dùng từ khoá static::method() với self::method().Các đặc điểm cơ bản của lập trình hướng đối tượng. Chúng được thể hiện như thế nào trong PHP, Sự khác biệt giữa Abstract Class và Interface và Thế nào là một hàm static, phân biệt cách dùng từ khoá static::method() với self::method(). Show Mục lụcPhần 1
Phần 2
Phần 3
Trong phần này, mình sẽ chia sẻ về 4 vấn tiếp theo trong loạt bài viết, đó là: Thế nào là Trait, Thế nào là Namespaces, Thế nào là magic functions, Tìm hiểu về các quy tắc trong PSR2.Thế nào là Trait, Thế nào là Namespaces, Thế nào là magic functions, Tìm hiểu về các quy tắc trong PSR2. Nội dung4. Thế nào là TraitTrait được giới thiệu trong PHP phiên bản 5.4.0 và được định nghĩa là một cơ chế cho phép lập trình viên tận dụng khả năng tái sử dụng lại code (code reusability) khi lập trình với ngôn ngữ chỉ cho phép thừa kế từ một class duy nhất (hay còn gọi là single inheritance) như PHP. Vậy 2 là gì? Trait là một module giúp cho chúng ta có thể sử dụng lại các phương thức được khai báo trong trait vào các class khác nhau hoặc trong các trait khác một cách đơn giản hơn là kế thừa như trước. Một trait tương tự như là 1 class nhưng chỉ nhằm mục đích nhóm chức năng lại. Và trait không thể khởi tạo giống class và trait sinh ra để bổ sung cho kế thừa truyền thống. Thay vì phải kế thừa 1 class hay interface để sử dụng lại 1 nhóm chức năng, thì với trait bạn không cần phải kế thừa vẫn có thể sử dụng được. Ví dụ:trait tương tự như là 1 class nhưng chỉ nhằm mục đích nhóm chức năng lại. Và trait không thể khởi tạo giống
class và trait sinh ra để bổ sung cho kế thừa truyền thống. Thay vì phải kế thừa 1 class hay interface để sử dụng lại 1 nhóm chức năng, thì với trait bạn không cần phải kế thừa vẫn có thể sử dụng được. Ví dụ:
Đây là trường hợp không sử dụng 3 và cũng không biết dùng trait ở đâu
Các bạn thấy không, mình không cần extends nhưng vẫn có thể sử dụng lại các phương thức của method listUsers() như trên. Để sử dụng trait trong PHP thì các bạn chỉ cần dùng từ khóa use để gọi trait bạn muốn sử dụng trong code của bạn. Sau đó bạn có thể sử dụng các phương thức trong trait mà bạn đã 4. Ví dụ ở trên mình 4 Database sau đó sẽ sử dụng lại được phương thức listUser() trong trait này À, đến đây, ta lại thấy, nếu muốn sử dụng nhiều phương thức trong nhiều trait thì làm như thế nào? Tiếp tục nhé.listUsers() như trên. Để sử dụng trait trong PHP thì các bạn chỉ cần dùng từ khóa use để gọi trait bạn muốn sử dụng trong code của bạn. Sau đó bạn có thể sử dụng các phương thức trong trait mà bạn đã 4. Ví dụ ở trên mình 4 Database sau đó sẽ sử dụng lại được phương thức listUser() trong trait này À, đến đây, ta lại thấy, nếu muốn sử dụng nhiều phương thức trong nhiều trait thì làm như thế nào? Tiếp tục nhé.
Các bạn hãy nhìn hình nhé. Ở đây mình có 2 trait là Hello và World chứa lần lượt phương thức là sayHello() và sayWorld(). Và việc sử dụng chúng rất đơn giản như là sử dụng một 3 vậy. Bạn có thể 4 và sử dụng các phương thức bên trong nó như bình thường. Có vẻ mọi thứ đã ổn. Nhưng nếu một ngày không đẹp trời, các phương thức trong các 3 giống nhau, chúng ta sẽ phải làm sao? Ở đây ta sẽ sử dụng 9 để xét độ ưu tiên cho phương thức bạn muốn sử dụng. Ví dụ :sayHello() và sayWorld(). Và việc sử dụng chúng rất đơn giản như là sử dụng một 3 vậy. Bạn có thể 4 và sử dụng các phương thức bên trong nó như bình thường. Có vẻ mọi thứ đã ổn. Nhưng nếu một ngày không đẹp trời, các phương thức trong các 3 giống nhau, chúng ta sẽ phải làm sao? Ở đây ta sẽ sử dụng 9 để xét độ ưu tiên cho phương thức bạn muốn sử dụng.
Ví dụ :
Tiếp theo, chúng ta sẽ tìm hiểu về 1 phần rất quan trọng trong 3 đó là 3 lồng. Bạn đã bao giờ nghĩ nếu có 100 trait, ta sẽ use tận 100 lần. Điều này là không nên. Nhìn rất củ chuối =))) Ví dụ:
Việc sử dụng 3 lồng không quá phức tạp và là cách giúp cho code dễ nhìn, hiệu quả hơn.5. Thế nào là namespace
6. Thế nào là magic functionsTrong lập trình hướng đối tượng để làm cho việc sử dụng các đối tượng dễ dàng hơn, PHP cũng cung cấp một số Magic Method, hoặc các phương thức đặc biệt được gọi khi các hành động nhất định xảy ra trong các đối tượng. Điều này cho phép các lập trình viên thực hiện một số nhiệm vụ hữu ích tương đối dễ dàng. Trong bài này mình xin phép nói về 2 magic function quan trọng và hay dùng nhất trong lập trình hướng đối tượng trong PHP. Đó là 4 và 5. Trước hết mình xin đi vào 4, vậy 4 là gì? Xét ví dụ sau:lập trình hướng đối tượng để làm cho việc sử dụng các đối tượng dễ dàng hơn, PHP cũng cung cấp một số
Magic Method, hoặc các phương thức đặc biệt được gọi khi các hành động nhất định xảy ra trong các đối tượng. Điều này cho phép các lập trình viên thực hiện một số nhiệm vụ hữu ích tương đối dễ dàng. Trong bài này mình xin phép nói về 2 magic function quan trọng và hay dùng nhất trong lập trình hướng đối tượng trong PHP. Đó là 4 và 5. Trước hết mình xin đi vào 4, vậy 4 là gì? Xét ví dụ sau:
Các bạn thấy gì nào? Sau khi khởi tạo đối tượng NameClass, lập tức hàm 8 sẽ tự động chạy. Điều này giống như một cách thông báo đến người lập trình. 5: Bản chất ngược lại với 4. Ví dụ:
Để kích hoạt destructor một cách rõ ràng, bạn có thể hủy đối tượng Object ngay lập tức bằng cách sử dụng hàm 1 :
Tiếp theo, chúng ta sẽ đi đến các hàm quan trọng khác... 2 : sẽ tự động được gọi khi chúng ta lấy ra giá trị của các thuộc tính trong đối mà chúng ta không được phép truy cập nó từ bên ngoài hoặc không tồn tại. VD: 0 3 : sẽ tự động được gọi khi chúng ta thiết lập giá trị cho một thuộc tính không được phép truy cập từ bên ngoài, hoặc không tồn tại. 1Ngoài ra còn một số magic funtions dưới đây mình xin phép được liệt kê dưới đây: 4 : hàm isset, sẽ được gọi khi chúng ta thực hiện kiểm tra một thuộc tính không được phép truy cập của một đối tượng, hay kiểm tra một thuộc tính không tồn tại trong đối tượng đó. 5: sẽ được gọi khi chúng ta thực hiện hủy (unset) một thuộc tính không được phép truy cập của một đối tượng, hay hủy một thuộc tính không tồn tại trong đối tượng đó. Cụ thể là hàm unset(). 6 : Phương thức 6 sẽ được gọi khi chúng ta thực hiện 8đối tượng. Thông thường khi chúng ta 8một đối tượng thì nó sẽ trả về tất cả các thuộc tính trong đối tượng đó. Nhưng nếu sử dụng 6 thì chúng ta có thể quy định được các thuộc tính có thể trả về. 1: sẽ được gọi khi chúng ta unserialize() đối tượng. Chúng thường được sử dụng để thực thi một hoặc nhiều hành động nào đó khi đối tượng được unserialize(). 2: sẽ được gọi khi chúng ta dùng đối tượng như một string. 3: sẽ được gọi khi chúng ta sử đối tượng như một hàm. 4: Đây là phương thức ít được sử dụng nhất trong PHP và hầu như là không bao giờ. Phương thức này sẽ được gọi khi chúng ta var_export() đối tượng. 5: được gọi khi chúng ta clone object. 6: được gọi khi chúng ta 7 đối tượng. Thông thường, khi chúng ta 7 một đối tượng thì nó sẽ trả về tất cả các thuộc tính và giá trị của nó trong đối tượng đó, nhưng khi chúng ta sử dụng phương thức 6thì chúng ta có thể tùy chỉnh thông số trả về. 0: hàm call, được gọi khi ta gọi đến một phương thức không tồn tại trong đối tượng 1: hàm call static, được gọi khi ta gọi đến một phương thức tĩnh không tồn tại trong đối tượngƯu và nhược điểm của magic functions :magic functions :
7. Các quy tắc trong PSR-2Viết code chuẩn (coding convention) là chúng ta tuân thủ một quy định trong viết code của một tập thể hay một công ty dựa theo quy chuẩn trong lập trình. Tùy thuộc vào ngôn ngữ sẽ có chuẩn viết code khác nhau. Trong bài viết này mình sẽ nói về chuẩn code PSR-2 trong PHP. PSR có nghĩa là PHP Standards Recommendations. Có rất nhiều PSR từ PSR-0 đến PSR-7. Trong đó PSR-1 và PSR-2 chúng ta sẽ tiếp xúc rất nhiều. PSR-1 sẽ giúp chúng ta biết thề nào và làm thế nào để đặt tên biến, tên hàm sau cho dể hiểu, dể đọc mang tính thống nhất toàn bộ. Khác với PSR-1, PSR-2 sẽ mang tính trình bày là chính. Nó có nhiệm vụ rất quan trong trong việc trình bài các dòng code của bạn. từ các dòng tab hay xuống hàng giữa các dòng, các hàm một cách tỉ mỉ. Vậy tại sao lại phải viết code chuẩn
Các quy tắc::
Một số chi tiết về chuẩn PSR-1:
Tạm kếtĐến đây, mình xin tạm dừng bài viết về Lập trình hướng đối tượng trong PHP tại đây. Cảm ơn các bạn đã theo dõi. Qua phần 1 và phần 2 này. Hi vọng các bạn đã có một cái nhìn rõ ràng hơn về lập trình hướng đối tượng. Trong phần cuối, mình sẽ viết về các phương pháp thiết kế hướng đối tượng (SOLID). Mong được sự theo dõi và ủng hộ từ các bạn. Xem thêm phần 1 và Phần 3.các phương pháp thiết kế hướng đối tượng (SOLID). Mong được sự theo dõi và ủng hộ từ các bạn. Xem thêm phần 1 và Phần 3. |