Một biến riêng tư trong php là gì?
Vấn đề với các biến công khai là chúng cho phép các hàm được gọi và các biến được đặt từ bất kỳ đâu trong tập lệnh của bạn, đây thường không phải là một điều thông minh. Nghĩ lại trước đây - chúng ta có một đối tượng thẻ chó $DogTag bên trong mỗi đối tượng chó cũng như một biến $Name, nhưng chúng có thông tin lặp lại bên trong Show
Nếu chúng tôi đã thay đổi biến $Name, thì $DogTag có được cập nhật tự động không?
Nếu bạn thử điều đó, bạn sẽ thấy vấn đề. Điều này đã phát sinh bởi vì chúng tôi đã cho phép bất kỳ phần nào trong tập lệnh của chúng tôi truy cập trực tiếp vào phần bên trong của đối tượng con chó của chúng tôi. Đây là một giải pháp
Lần này, đối tượng con chó đã nhúng logic để biết cách xử lý việc đổi tên đúng cách. Miễn là mọi người sử dụng hàm setName(), tên của con chó và thẻ con chó của nó sẽ được cập nhật chỉ với một lần gọi Tuy nhiên, với kịch bản trên, một số lập trình viên vô đạo đức, lười biếng hoặc thiếu hiểu biết vẫn có thể viết $poppy->Name = "Rover", do đó không sử dụng hàm setName() đặc biệt mà chúng tôi đã cung cấp. Đây là lúc các biến riêng xuất hiện - chúng ta có thể hướng dẫn PHP rằng biến $Name là riêng tư và do đó chỉ có thể thay đổi với lớp mà nó là một phần của nó. Đây là mã mới
Lưu ý rằng cả $Name và $DogTag đều là riêng tư, có nghĩa là không ai có thể truy cập chúng trừ khi làm như vậy trong một hàm là một phần của đối tượng, chẳng hạn như setName(). Lưu ý rằng bản thân setName() vẫn ở chế độ công khai - chúng tôi muốn bất kỳ ai cũng có thể truy cập được Bây giờ nếu lập trình viên lười biếng của chúng ta xuất hiện và cố gắng đặt $Name trực tiếp bằng cách sử dụng mã như $poppy->Name, họ sẽ không nhận được những gì họ mong đợi. Bạn thấy đấy, nếu họ cố gắng thay đổi trực tiếp một biến riêng thì PHP sẽ tự động đưa ra thông báo lỗi. Tuy nhiên, nếu biến riêng đó được kế thừa từ một lớp khác, PHP sẽ cố gắng đáp ứng yêu cầu của họ bằng cách có một biến riêng và một biến chung. Vâng, điều này hơi khó hiểu, tuy nhiên đoạn mã sau sẽ làm sáng tỏ mọi thứ
Chạy tập lệnh đó sẽ xuất ra như sau
Lưu ý rằng có hai biến Tên - một biến là riêng tư và không thể chạm vào, và một biến khác mà PHP tạo để sử dụng cục bộ theo yêu cầu. Rõ ràng điều này gây nhầm lẫn và bạn nên cố gắng tránh tình huống này nếu có thể Lưu ý rằng các hàm và biến riêng chỉ có thể được truy cập bởi lớp chính xác sở hữu chúng - các lớp con không thể truy cập các biến của hàm cha riêng. Để làm điều này, bạn cần có từ khóa protected Bạn muốn học PHP 7? Hacking with PHP đã được cập nhật đầy đủ cho PHP 7 và hiện có sẵn dưới dạng PDF có thể tải xuống. Nhận hơn 1200 trang học PHP thực hành ngay hôm nay Nếu điều này hữu ích, vui lòng dành chút thời gian để nói với những người khác về Hacking với PHP bằng cách tweet về nó Để đặt quyền truy cập cho các phương thức và biến của lớp, chúng tôi sử dụng các công cụ sửa đổi quyền truy cập không gì khác ngoài các từ khóa PHP. Chúng ta thậm chí có thể gán một số công cụ sửa đổi truy cập này cho chính lớp đó để làm cho lớp hoạt động theo một cách đặc biệt Sau đây là các từ khóa PHP được sử dụng làm công cụ sửa đổi truy cập cùng với ý nghĩa của chúng
Khi nào nên sử dụng công cụ sửa đổi truy cập nàoChúng tôi không thể sử dụng tất cả các công cụ sửa đổi truy cập có sẵn với lớp, các biến và phương thức của nó. Trong bảng bên dưới, chúng tôi đã chỉ định trình xác định quyền truy cập nào được áp dụng cho những gì Access ModiferclassesfunctionsvariablespublicNot ApplicableApplicableApplicableprivateNot ApplicableApplicableApplicableprotectedNot ApplicableApplicableApplicableabstractApplicableApplicableNot ApplicablefinalApplicableApplicableNot ApplicableBây giờ chúng ta đã biết công cụ sửa đổi truy cập nào được sử dụng ở đâu, hãy tìm hiểu chi tiết về công cụ sửa đổi truy cập cùng với các ví dụ public Công cụ sửa đổi truy cậpNếu chúng tôi không chỉ định bất kỳ công cụ sửa đổi truy cập nào, tất cả các lớp và các thành viên của nó được coi là Như đã đề cập trong bảng trên, không thể sử dụng các từ bổ nghĩa truy cập lỗi phân tích cú pháp. lỗi cú pháp, 'công khai' (T_PUBLIC) không mong muốn trong Chúng tôi sẽ nhận được lỗi trên Nhưng đối với các phương thức và biến của lớp, chúng ta nên chỉ định các chỉ định truy cập mặc dù theo mặc định, chúng được coi là công khai Đây là một ví dụ đơn giản về lớp PHP Trong đoạn mã trên, chúng tôi đã sử dụng từ khóa 7 trước biến lớp. Nếu chúng tôi không sử dụng 7, chúng tôi sẽ gặp lỗi phân tích cú phápNhưng thay vì sử dụng 7, chúng ta cũng có thể sử dụng các từ khóa công cụ sửa đổi truy cập trước lớp phân bổ biến lớp, chẳng hạnĐây là cách chúng ta nên tạo một lớp PHP, cách lập trình tốt là chỉ định các công cụ sửa đổi truy cập cùng với các biến và phương thức của lớp private Công cụ sửa đổi truy cậpChúng ta có thể sử dụng công cụ sửa đổi truy cập
Trong đoạn mã trên, 3 và 4 là các biến lớp riêng, do đó chúng ta không thể truy cập trực tiếp chúng bằng đối tượng lớpVì vậy, khi chúng tôi cố gắng thực thi dòng mã sau
Chúng tôi sẽ nhận được một lỗi nghiêm trọng PHP Lỗi nghiêm trọng. Không thể truy cập tài sản cá nhân Người. $fname trong Nhưng chúng ta có thể dễ dàng truy cập các biến riêng của một lớp bằng cách định nghĩa các hàm công khai trong lớp. Chúng ta có thể tạo các hàm riêng biệt để đặt giá trị cho các biến riêng tư và để nhận cả giá trị của chúng. Các chức năng này được gọi là Getters và Setters
Tên tôi là John Wick Chúng ta nên có các phương thức getter và setter cho tất cả các biến riêng tư trong lớp protected Công cụ sửa đổi truy cậpGiống như công cụ sửa đổi truy cập _______ 35 _______, công cụ sửa đổi truy cập Chúng ta sẽ học cách tạo subclass và khái niệm về Inheritance trong các bài hướng dẫn sắp tới Hãy lấy một ví dụ nhanh và đơn giản
Trong chương trình trên, chúng tôi đã xác định hai lớp, 9 và 0. Lớp 0 là lớp con của lớp 9Trong lớp 9, tất cả các biến và phương thức của lớp làprotected , do đó chúng không thể được truy cập từ bên ngoài lớp, nhưng chúng có thể được truy cập bên trong lớp con của lớp 9Đừng lo lắng nếu điều này có vẻ khó hiểu do khái niệm Kế thừa, chúng ta sẽ quay lại vấn đề này khi chúng ta tìm hiểu về Kế thừa 0 Công cụ sửa đổi truy cậpCông cụ sửa đổi truy cập 0 được sử dụng với lớp PHP và các chức năng của nó. Nó không thể được sử dụng cho các biến lớpNếu một lớp thậm chí chỉ có một phương thức 0. thì lớp cũng phải được định nghĩa là 0Ngoài ra, PHP không cho phép khởi tạo lớp trừu tượng i. e. bạn không thể tạo đối tượng của lớp 0, mặc dù các lớp này có thể được kế thừaChúng ta sẽ tìm hiểu chi tiết về công cụ sửa đổi truy cập này khi chúng ta sẽ đề cập đến Lớp trừu tượng và Giao diện 1 Công cụ sửa đổi truy cậpKhi chúng ta khai báo một lớp là 1, sử dụng công cụ sửa đổi truy cập này, thì lớp đó không thể được kế thừaTương tự, khi chúng ta định nghĩa một hàm lớp là 1, PHP hạn chế các lớp con của lớp đó ghi đè hàm được khai báo là 1Làm cách nào để sử dụng các biến riêng tư trong PHP?Cách tốt nhất để khai báo một biến riêng trong Lớp PHP là tạo chúng phía trên phương thức __Construction , theo quy ước, bạn có thể bắt đầu . e $_private_variable) để cho các lập trình viên khác đang đọc mã của bạn biết ngay rằng đó là một biến riêng tư, tuyệt vời.
Sự khác biệt giữa các biến công khai và riêng tư là gì?Biến công khai, là các biến hiển thị cho tất cả các lớp. Biến riêng, là những biến chỉ hiển thị với lớp mà chúng thuộc về .
Làm cách nào để truy cập tài sản riêng trong PHP?php sử dụng PhpPrivateAccess \MyClass; . $đóng cửa = \Đóng cửa. liên kết (hàm (MyClass $class) { return $class->property; }, null, MyClass. tầng lớp); . "
Làm cách nào để truy cập biến riêng trong một lớp khác trong PHP?Bạn cần đặt quyền truy cập thành được bảo vệ. Riêng tư có nghĩa là nó chỉ có thể được truy cập từ bên trong lớp của chính nó và không thể kế thừa. Được bảo vệ cho phép nó được kế thừa nhưng vẫn không thể truy cập trực tiếp từ bên ngoài lớp. Lưu câu trả lời này |