Chế độ protected: Chế độ này sẽ được dùng để giới hạn truy cập tới các lớp được thừa kế và bản thân lớp định nghĩa thành viên đó.

Một phần của tài liệu Bài giảng mã nguồn mở chương 5 (Trang 50 - 53)

các lớp được thừa kế và bản thân lớp định nghĩa thành viên đó.

Với PHP5, tất cả các thành viên của một lớp đều phải được khai báo tính rõ ràng với các từ khoá tương ứng là public, protected và private. tính rõ ràng với các từ khoá tương ứng là public, protected và private.

Môn Các Hệ Thống Mã Nguồn Mở 51

Ví dụ minh họa các từ khóa private, protected và public

<?php

class MyClass{

public $public = 'Public 1'; // truy xuất mọi nơi ∈ trang

private $private = 'Private 1'; // chỉ t.x được bên trong lớp

protected $protected = 'Protected 1'; // không cho kế thừa,private

public function printHello(){ // được truy xuất mọi thuộc

echo $this->public."<br>"; // bên trong lớp

echo $this->protected."<br>"; echo $this->private."<br>"; }

}

class MyClass2 extends MyClass{ // thừa kế từ lớp MyClass

protected $protected = 'Protected2';

function printHello(){ // chồng hàm

echo $this->public."<br>"; // thừa kế từ MyClass

echo $this->protected."<br>"; // lấy thuộc tính riêng

echo $this->private."<br>"; // không thừa kế từ MyClass

} }

Môn Các Hệ Thống Mã Nguồn Mở 52

$obj = new MyClass(); echo $obj->public; /

echo $obj->protected; // lỗi: $protected đã bị đặt ở chế độ bảo vệ echo $obj->private; // lỗi: $private đã bị đặt ở chế độ riêng tư $obj->printHello();

// Hoạt động bình thường, do các thuộc tính được triệu gọi bên trong một phương thức nằm trong lớp.

$obj2 = new MyClass2();

echo $obj->public; // Chạy tốt

echo $obj2->private; // Chưa được định nghĩa echo $obj2->protected; // Gây lỗi

$obj2->printHello(); // Hiển thị Public, Protected2, not Private ?>

Hỏi Đáp ?

Môn Các Hệ Thống Mã Nguồn Mở 53 (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Bài giảng mã nguồn mở chương 5 (Trang 50 - 53)