Lập trình hướng đối tượng trong PHP – bloghong.com

Rate this post

Chúng ta mang thể tưởng tượng rằng vũ trụ được tạo từ những đối tượng khác nhau như mặt trời, mặt trăng, trái đất,… Theo cách tương tự, bạn mang thể tưởng tượng chiếc xe tương đối được tạo từ những đối tượng khác nhau như bánh xe, khung xe, động cơ, cần sang số… Theo cách như vậy, những khái niệm trong lập trình hướng đối tượng giả sử rằng mọi thứ như một đối tượng và triển khai một phần mềm bởi sử dụng những đối tượng khác nhau. Bạn mang thể tham khảo cách Steve Jobs khái niệm lập trình hướng đối tượng làm cả thế giới thán phục, mô tả quy trình lập trình hướng đối tượng rất dễ hiểu.

Những khái niệm hướng đối tượng trong PHP

Trước lúc đi vào yếu tố, chúng ta nhắc lại một số khái niệm liên quan tới Lập trình hướng đối tượng.

Bạn Đang Xem: Lập trình hướng đối tượng trong PHP – bloghong.com

Class − Đây là một kiểu dữ liệu được khái niệm bởi lập trình viên, mà gồm những hàm cục bộ cũng như dữ liệu cục bộ. Bạn mang thể nghĩ về một Class như là một Template để tạo nhiều occasion (sự thể hiện) của cùng loại (hoặc lớp) của đối tượng.

Object − Một occasion (sự thể hiện) riêng biệt của cấu trúc dữ liệu được khái niệm bởi một Class. Một lúc bạn khái niệm một Class, và sau đó tạo nhiều Object của Class đó. Những Object cũng còn được biết như là Occasion.

Biến thành viên − Đây là những biến được khái niệm bên trong một Class. Dữ liệu này sẽ ko nhìn thấy với ngoại vi lớp đó và mang thể được truy cập thông qua những hàm thành viên. Những biến này được gọi là attribute của đối tượng một lúc đối tượng đã được tạo.

Hàm thành viên − Đây là hàm được khái niệm bên trong một Class và được sử dụng để truy cập dữ liệu đối tượng.

Tính kế thừa − Lúc một lớp được khái niệm bằng việc kế thừa hàm đang tồn tại của một lớp cha, thì nó được gọi là tính kế thừa. Ở đây, lớp con sẽ kế thừa tất cả hoặc một số hàm và biến thành viên của lớp cha.

Lớp cha − Một lớp mà được kế thừa từ lớp khác. Nó cũng được gọi là một lớp cơ sở (base class) hoặc tremendous class.

Lớp con − Một lớp mà kế thừa từ lớp khác. Nó cũng được gọi là một lớp phụ hoặc một lớp kế thừa.

Tính đa hình − Đây là một khái niệm hướng đối tượng mà cùng một hàm mang thể được sử dụng cho những mục tiêu khác nhau. Ví dụ, tên hàm sẽ vẫn giống như vậy, nhưng nó nhận số thông số khác nhau và mang thể thực hiện những tác vụ khác nhau.

Nạp chồng (Overloading) − Một kiểu đa hình, trong đó một số hoặc tất cả toán tử mang trình triển khai khác nhau phụ thuộc vào kiểu những thông số của chúng. Tương tự, những hàm cũng mang thể được nạp chồng với trình triển khai khác nhau.

Trừu tượng hóa dữ liệu − Bất kỳ trình diễn dữ liệu nào mà trong đó yếu tố về trình triển khai bị ẩn.

Tính bao đóng − Liên quan tới một khái niệm mà chúng ta mang thể bao đóng tất cả dữ liệu và hàm thành viên với nhau để tạo thành một Object.

Constructor − Liên quan tới một kiểu hàm đặc trưng mà sẽ được gọi tự động bất cứ lúc nào mang một sự tạo thành đối tượng từ một Class.

Destructor − Liên quan tới một kiểu hàm đặc trưng mà sẽ được gọi tự động bất cứ lúc nào một đối tượng bị xóa hoặc ra khỏi phạm vi.

Khái niệm Class trong PHP

Kind chung để khái niệm một lớp mới trong PHP như sau:

<?php class phpClass{ var $var1; var $var2 = "Một hằng số"; perform myfunc ($arg1, $arg2) { [..] } [..] } ?>

Dưới đây là phần giảng giải mỗi dòng trên:

  • Thủ tục class đặc trưng đi kèm với tên của lớp mà bạn muốn khái niệm.
  • Những cặp dấu ngoặc móc bao quanh bất kỳ số lượng khai báo biến hoặc khái niệm hàm nào.
  • Những khai báo biến khởi đầu với thủ tục đặc trưng var đi kèm với một tên biến theo qui ước $; chúng cũng mang thể mang một phép gán khởi tạo tới một giá trị hằng số.
  • Khái niệm hàm ở đây khá giống với những hàm standalone trong PHP, nhưng đây là hàm cục bộ cho lớp và sẽ được sử dụng để thiết lập và truy cập dữ liệu đối tượng.

Ví dụ:

Ví dụ sau khái niệm một lớp tên là Books.

Phần 1:

<?php class Books{ /* những biến thành viên */ var $worth; var $title; /* những hàm thành viên */ perform setPrice($par){ $this->worth = $par; } perform getPrice(){ echo $this->worth ."<br/>"; } perform setTitle($par){ $this->title = $par; } perform getTitle(){ echo $this->title ." <br/>"; } } ?>

Biến $this là một biến đặc trưng và nó tham chiếu tới cùng đối tượng (ví dụ: chính nó).

Tạo Object trong PHP

Một lúc bạn đã khái niệm lớp cho mình, thì bạn mang thể tạo bao nhiêu đối tượng của kiểu lớp đó tùy bạn thích. Ví dụ sau là cách tạo đối tượng bởi sử dụng từ khóa new trong PHP.

Phần 2:

$tiengAnh = new Books;$toanCaoCap = new Books;$tuTuongHCM = new Books;

Ở đây, chúng ta đã tạo 3 đối tượng và những đối tượng này là độc lập với nhau và chúng sẽ mang sự tồn tại riêng rẽ nhau. Phần tiếp theo, chúng ta xem cách truy cập hàm thành viên và xử lý những biến thành viên trong PHP.

Gọi hàm thành viên trong PHP

Sau lúc tạo những đối tượng, bạn sẽ mang thể gọi những hàm thành viên liên quan tới đối tượng đó. Một hàm thành viên sẽ chỉ mang thể xử lý biến thành viên liên quan tới đối tượng đó.

Ví dụ sau minh họa cách thiết lập title và worth cho 3 guide bằng cách gọi những hàm thành viên.

Phần 3:

$tiengAnh->setTitle( "English Grammar in Use" ); $tuTuongHCM->setTitle( "Toán cao cấp 1" ); $toanCaoCap->setTitle( "Tư tưởng Hồ Chí Minh" ); $tiengAnh->setPrice( 10 ); $tuTuongHCM->setPrice( 15 ); $toanCaoCap->setPrice( 7 );

Hiện tại bạn gọi những hàm thành viên khác để lấy giá trị đã được thiết lập trong ví dụ trên:

Xem Thêm : Cấu trúc on behalf of trong tiếng Anh – Step Up English

Phần 4:

$tiengAnh->getTitle(); $tuTuongHCM->getTitle(); $toanCaoCap->getTitle(); $tiengAnh->getPrice(); $tuTuongHCM->getPrice(); $toanCaoCap->getPrice();

Lưu 4 phần code trên (theo trật tự như trên) trong một file mang tên là bloghong.com trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/take a look at.php sẽ cho kết quả:

Gọi hàm thành viên trong PHP

Hàm constructor trong PHP

Hàm constructor là kiểu hàm đặc trưng mà sẽ được gọi tự động bất cứ lúc nào mang một sự tạo thành đối tượng từ một Class. Vì thế, chúng ta lợi dụng cách vận hành này, bằng việc khởi tạo nhiều thứ thông qua những hàm constructor trong PHP.

PHP cung cấp một hàm đặc trưng được gọi là __construct() để khái niệm một constructor. Bạn mang thể truyền bao nhiêu thông số tùy bạn vào trong hàm constructor này.

Ví dụ sau sẽ tạo một constructor cho lớp Books và nó sẽ khởi tạo worth và title cho guide tại thời khắc tạo đối tượng này.

Phần 1.1:

perform __construct( $par1, $par2 ){ $this->worth = $par1; $this->title = $par2;}

Hiện tại, chúng ta ko cần gọi tập hợp hàm riêng rẽ để thiết lập worth và title. Chúng ta chỉ mang thể khởi tạo hai biến thành viên của chúng tại thời khắc tạo đối tượng. Bạn kiểm tra ví dụ sau:

Phần 2.2:

$tiengAnh = new Books( "English Grammar in Use", 10 ); $toanCaoCap = new Books ( "Toán cao cấp 1", 15 ); $tuTuongHCM = new Books ("Tư tưởng Hồ Chí Minh", 7 ); /* lấy những giá trị đã được thiết lập */ $tiengAnh->getTitle(); $tuTuongHCM->getTitle(); $toanCaoCap->getTitle(); $tiengAnh->getPrice(); $tuTuongHCM->getPrice(); $toanCaoCap->getPrice();

Đặt contructor (phần 1.1) vào class (phần 1) và sau đó thay những phần 2, 3 và 4 bằng phần 2.2 (theo trật tự như trên) trong một file mang tên là bloghong.com trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/take a look at.php sẽ cho kết quả tương tự như trên:

Hàm constructor trong PHP

Destructor trong PHP

Giống một hàm constructor trong PHP, bạn mang thể khái niệm một hàm destructor bởi sử dụng hàm __destruct(). Bạn mang thể phóng thích tất cả nguồn với một destructor trong PHP.

Tính kế thừa trong PHP

Những khái niệm lớp trong PHP mang thể kế thừa từ một khái niệm lớp cha bởi sử dụng mệnh đề extends trong PHP. Cú pháp của nó như sau:

class Baby extends Dad or mum { <phần khái niệm của lớp con>}

Hiệu quả của tính kế thừa là lớp con (lớp phụ hoặc lớp kế thừa) mang những đặc trưng sau:

Tự động mang tất cả khai báo biến thành viên của lớp cha.

Tự động mang tất cả những hàm thành viên giống như trong lớp cha, mà (theo mặc định) sẽ làm việc theo cùng phương thức như lúc hàm đó làm trong lớp cha.

Ví dụ sau kế thừa lớp Books và thêm một số tính năng tùy theo yêu cầu.

class Novel extends Books{ var writer; perform setPublisher($par){ $this->writer = $par; } perform getPublisher(){ echo $this->writer. "<br />"; } }

Hiện tại, ngoài những hàm đã kế thừa, lớp Novel bổ sung thêm hai hàm thành viên.

Ghi đè hàm (Operate Overriding) trong PHP

Những khái niệm hàm trong những lớp con ghi đè những khái niệm với cùng tên trong những lớp cha. Trong một lớp con, chúng ta mang thể sửa đổi khái niệm của một hàm được kế thừa từ lớp cha.

Trong ví dụ sau, những hàm getPrice và getTitle được ghi đè để trả về những giá trị.

perform getPrice(){ echo $this->worth . "<br/>"; return $this->worth; } perform getTitle(){ echo $this->title . "<br/>"; return $this->title; }

Thành viên public trong PHP

Trừ lúc bạn xác định, nếu ko thì những tính chất (property) và phương thức của một lớp là public. Tức là, chúng mang thể được truy cập trong 3 tình huống sau:

Từ bên ngoài lớp trong đó nó được khai báo.

Từ bên trong lớp trong đó nó được khai báo.

Từ bên trong lớp ngoài mà triển khai lớp đó trong đó nó được khai báo.

Tới giờ, chúng ta đã thấy tất cả thành viên là những thành viên public. Nếu bạn muốn giới hạn truy cập của những thành viên của một lớp, thì bạn khái niệm thành viên lớp là non-public hoặc protected trong PHP.

Thành viên non-public trong PHP

Bằng việc chỉ định một thành viên là non-public, bạn giới hạn độ truy cập cho lớp trong đó nó được khai báo. Thành viên non-public ko thể được tham chiếu từ những lớp mà kế thừa lớp trong đó nó được khai báo và ko thể được truy cập từ bên ngoài lớp đó.

Xem Thêm : Gốm sứ tiếng anh là gì? Phân loại giữa gốm và sứ – Blog Thiên Minh

Một thành viên lớp mang thể được chỉ định là non-public bởi sử dụng từ khóa non-public ở trước thành viên đó.

class MyClass { non-public $automotive = "skoda"; $driver = "SRK"; perform __construct($par) { // những lệnh ở đây được thực thi mỗi lúc // một occasion của class // được tạo } perform myPublicFunction() { return("Đây là một hàm Public!"); } non-public perform myPrivateFunction() { return("Đây là một hàm Non-public!"); } }

Lúc lớp MyClass được kế thừa bởi lớp khác bởi sử dụng extends, hàm myPublicFunction() sẽ là nhìn thấy, như $driver. Lớp kế thừa sẽ ko nhận diện hoặc ko truy cập tới hàm myPrivateFunction và $automotive, bởi vì chúng được khai báo là non-public.

Thành viên protected trong PHP

Một tính chất hoặc phương thức protected là mang thể truy cập trong lớp mà trong đó nó được khai báo, cũng như trong những lớp mà kế thừa từ lớp đó. Những thành viên protected là ko mang sẵn với ngoại vi của hai loại lớp này. Một thành viên lớp mang thể được chỉ định là protected bởi sử dụng từ khóa protected ở trước thành viên đó trong PHP.

Dưới đây là phiên bản khác của MyClass:

class MyClass { protected $automotive = "skoda"; $driver = "SRK"; perform __construct($par) { // những lệnh ở đây được thực thi mỗi lúc // một occasion của class // được tạo } perform myPublicFunction() { return("Đây là một hàm Public!"); } protected perform myPrivateFunction() { return("Đây là một hàm Protected!"); } }

Interface trong PHP

Interface được khái niệm để cung cấp một tên hàm chung cho những trình triển khai. Những Implementor khác nhau mang thể triển khai những Interface của chúng theo yêu cầu của chúng. Bạn mang thể nói, Interface là bộ khung mà được triển khai bởi lập trình viên.

Như trong PHP 5, nó là mang thể để khái niệm một Interface, giống như:

interface Mail { public perform sendMail(); }

Sau đó, nếu lớp khác triển khai Interface đó, giống như:

class Report implements Mail { // lớp này cần khái niệm hàm sendMail() }

Hằng số (Fixed) trong PHP

Một fixed là một dòng gì đó giống như một biến, trong đó nó giữ một giá trị, nhưng thực sự thì nó giống một hàm hơn, bởi vì một hằng là ko thể thay đổi. Một lúc bạn khai báo một hằng, nó ko thay đổi.

Khai báo một hằng trong PHP là khá dễ dàng, như được thực hiện trong phiên bản MyClass này.

class MyClass { const requiredMargin = 1.7; // từ khóa const perform __construct($incomingValue) { // những lệnh ở đây được thực thi mỗi lúc // một occasion của class // được tạo } }

Trong lớp này, requireMargin là một hằng. Nó được khai báo với từ khóa const trong PHP, và giá trị của nó sẽ ko thay đổi trong bất kỳ tình huống nào. Ghi nhớ rằng, tên hằng ko khởi đầu với $, như trong tên biến.

Lớp trừu tượng (Summary Class) trong PHP

Một lớp trừu tượng là một lớp mà ko thể được khởi tạo, chỉ được kế thừa. Bạn khai báo một lớp trừu tượng với từ khóa summary trong PHP, giống như dưới đây.

Lúc kế thừa từ một lớp trừu tượng, tất cả phương thức được đánh dấu summary trong khai báo lớp cha phải được khái niệm bởi lớp con; ngoài ra, những phương thức này phải được khái niệm với cùng tính nhìn thấy.

summary class MyAbstractClass { summary perform myAbstractFunction() { } }

Ghi chú rằng, những khái niệm hàm bên trong một lớp trừu tượng cũng phải được đặt trước bởi từ khóa summary. Trong PHP, nó là ko hợp thức nếu bạn mang khái niệm hàm summary bên trong một lớp non-abstract.

Từ khóa static trong PHP

Khai báo những thành viên lớp hoặc phương thức lớp là static làm cho chúng mang thể truy cập mà ko cần một khởi tạo lớp. Một thành viên được khai báo là static ko thể được truy cập với một đối tượng lớp đã được khởi tạo (mặc dù một phương thức là static mang thể).

Ban thử ví dụ sau:

<?php class Foo { public static $my_static = 'foo'; public perform staticValue() { return self::$my_static; } } print Foo::$my_static . "n"; $foo = new Foo(); print $foo->staticValue() . "n"; ?>

Từ khóa closing trong PHP

PHP 5 giới thiệu từ khóa closing, mà ngăn cản những lớp con từ việc ghi đè một phương thức bằng việc đặt vào trước khái niệm từ khóa closing. Nếu chính lớp đó đang được khai bào là closing, thì nó ko thể được kế thừa.

Ví dụ sau tạo Deadly Error: Can not override closing technique BaseClass::moreTesting()

<?php class BaseClass { public perform take a look at() { echo "BaseClass::take a look at() known as<br>"; } closing public perform moreTesting() { echo "BaseClass::moreTesting() known as<br>"; } } class ChildClass extends BaseClass { public perform moreTesting() { echo "ChildClass::moreTesting() known as<br>"; } } ?>

Gọi constructor cha trong PHP

Thay vì viết cả một constructor mới cho lớp con, bạn mang thể viết nó bằng cách gọi constructor của lớp cha một cách tường minh và sau dó thực hiện bất kỳ việc gì cấp thiết để khởi tạo lớp con này. Dưới đây là một ví dụ đơn thuần trong PHP.

class Identify { var $_firstName; var $_lastName; perform Identify($first_name, $last_name) { $this->_firstName = $first_name; $this->_lastName = $last_name; } perform toString() { return($this->_lastName .", " .$this->_firstName); } } class NameSub1 extends Identify { var $_middleInitial; perform NameSub1($first_name, $middle_initial, $last_name) { Identify::Identify($first_name, $last_name); $this->_middleInitial = $middle_initial; } perform toString() { return(Identify::toString() . " " . $this->_middleInitial); } }

Trong ví dụ này, chúng ta mang lớp cha Identify, mang một constructor nhận hai thông số, và một lớp con NameSub1, mang một constructor nhận 3 thông số. Constructor của NameSub1 thực hiện chức năng bằng việc gọi constructor cha của nó một cách tường minh bởi sử dụng cú pháp :: (truyền hai thông số của nó) và sau đó thiết lập một trường bổ sung. Theo cách tương tự, NameSub1 khái niệm hàm toString() mà nó ghi đè từ lớp cha.

Ví dụ − Một constructor mang thể được khái niệm với cùng tên như tên của một lớp, như trong ví dụ trên.

Theo tutorialspoint

Bài trước: PHP & XML

Bài tiếp: PHP cho Lập trình viên C

Xem Thêm : Công việc của nhân viên hành chính văn phòng – JobsGO Blog