1. Trang chủ
  2. » Thể loại khác

Lập trình hướng đối tượng trong PHP | 297 bài hướng dẫn PHP hay nhất php object oriented

14 169 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 413,67 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Lập trình hướng đối tượng trong PHP | 297 bài hướng dẫn PHP hay nhất php object oriented tài liệu, giáo án, bài giảng ,...

Trang 1

Lập trình hướng đối tượng trong PHP Chúng ta có thể tưởng tượng rằng vụ trụ được tạo từ các đố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 có thể tưởng tượng chiếc xe hơi được tạo từ các đối tượng khác nhau như bánh xe, bánh lái, cần sang số, … Theo cách như vậy, các 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 các đối tượng khác nhau

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

Trước khi đi vào chi tiế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

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

Object − Một instance (sự thể hiện) riêng biệt của cấu trúc dữ liệu được định nghĩa bởi một Class Một khi bạn định nghĩa một Class, và sau đó tạo nhiều Object của Class đó Các Object cũng còn được biết như là Instance

Biến thành viên − Đây là các biến được định nghĩa bên trong một Class Dữ liệu này sẽ

không nhìn thấy với ngoại vi lớp đó và có thể được truy cập thông qua các hàm thành viên Những biến này được gọi là attribute của đối tượng một khi đối tượng đã được tạo

Hàm thành viên − Đây là hàm được định nghĩa 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 − Khi một lớp được định nghĩa 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 super 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

Trang 2

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 có thể được sử

dụng cho các mục đích khác nhau Ví dụ, tên hàm sẽ vẫn giống như vậy, nhưng nó nhận

số tham số khác nhau và có thể thực hiện các 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ử có trình

triển khai khác nhau phụ thuộc vào kiểu các tham số của chúng Tương tự, các hàm cũng

có 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ỳ biểu diễn dữ liệu nào mà trong đó chi tiế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 có 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 biệt mà sẽ được gọi tự động bất cứ khi nào

có 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 biệt mà sẽ được gọi tự động bất cứ khi nào một đối tượng bị xóa hoặc ra khỏi phạm vi

Định nghĩa Class trong PHP

Form chung để định nghĩa một lớp mới trong PHP như sau:

<? php

class phpClass {

var $var1 ;

var $var2 = "constant string" ;

function myfunc ( $arg1 , $arg2 ) {

[ ]

}

[ ]

}

?>

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

Trang 3

Thủ tục class đặc biệt, được theo sau bởi tên của lớp mà bạn muốn định nghĩa

 Một tập hợp dấu ngoặc móc bao quanh bất kỳ số lượng khai báo biến hoặc định nghĩa hàm nào

Các khai báo biến bắt đầu với thủ tục đặc biệt var, được theo sau bởi một tên biến theo qui

ước $; chúng cũng có thể có một phép gán khởi tạo tới một giá trị hằng số

 Định nghĩa hàm ở đây khá giống với các 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 định nghĩa một lớp tên là Books

<? php

class Books {

/* Member variables */

var $price ;

var $title ;

/* Member functions */

function setPrice ( $par ){

$this -> price = $par ;

}

function getPrice (){

echo $this -> price "<br/>" ;

}

function setTitle ( $par ){

$this -> title = $par ;

}

function getTitle (){

echo $this -> title " <br/>" ;

Trang 4

}

}

?>

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

Tạo Object trong PHP

Một khi bạn đã định nghĩa lớp cho mình, thì bạn có 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

$physics = new Books;

$maths = new Books;

$chemistry = 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ẽ có 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ý các biến thành viên trong PHP

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

Sau khi tạo các đối tượng, bạn sẽ có thể gọi các hàm thành viên liên quan tới đối tượng đó Một hàm thành viên sẽ chỉ có 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à price cho 3 book bằng cách gọi các hàm thành viên

$physics -> setTitle ( "Physics for High School" );

$chemistry -> setTitle ( "Advanced Chemistry" );

$maths -> setTitle ( "Algebra" );

$physics -> setPrice ( 10 );

$chemistry -> setPrice ( 15 );

$maths -> setPrice ( 7 );

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

$physics -> getTitle ();

$chemistry -> getTitle ();

$maths -> getTitle ();

Trang 5

$physics -> getPrice ();

$chemistry -> getPrice ();

$maths -> getPrice ();

Ví dụ trên sẽ cho kết quả:

Physics for High School

Advanced Chemistry

Algebra

10

15

7

Hàm constructor trong PHP

Hàm constructor là kiểu hàm đặc biệt mà sẽ được gọi tự động bất cứ khi nào có 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 các hàm constructor trong PHP

PHP cung cấp một hàm đặc biệt được gọi là construct() để định nghĩa một constructor Bạn có thể truyền bao nhiêu tham 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 price và title cho book tại thời điểm tạo đối tượng này

function construct( $par1, $par2 ){

$this->price = $par1;

$this->title = $par2;

}

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

$physics = new Books ( "Physics for High School" , 10 );

$maths = new Books "Advanced Chemistry" , 15 );

$chemistry = new Books "Algebra" , 7 );

/* Get those set values */

$physics -> getTitle ();

Trang 6

$chemistry -> getTitle ();

$maths -> getTitle ();

$physics -> getPrice ();

$chemistry -> getPrice ();

$maths -> getPrice ();

Ví dụ trên sẽ cho kết quả:

Physics for High School

Advanced Chemistry

Algebra

10

15

7

Destructor trong PHP

Giống một hàm constructor trong PHP, bạn có thể định nghĩa một hàm destructor bởi sử dụng

hàm destruct() Bạn có thể giải phóng tất cả nguồn với một destructor trong PHP

Tính kế thừa trong PHP

Các định nghĩa lớp trong PHP có thể kế thừa từ một định nghĩa lớp cha bởi sử dụng mệnh

đề extends trong PHP Cú pháp của nó như sau:

class Child extends Parent {

<definition body>

}

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

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

 Tự động có tất cả các 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ư khi 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 {

Trang 7

var publisher ;

function setPublisher ( $par ){

$this -> publisher = $par ;

}

function getPublisher (){

echo $this -> publisher "<br />" ;

}

}

Bây giờ, 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 (Function Overriding) trong PHP

Các định nghĩa hàm trong các lớp con ghi đè các định nghĩa với cùng tên trong các lớp cha Trong một lớp con, chúng ta có thể sửa đổi định nghĩa của một hàm được kế thừa từ lớp cha

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

function getPrice (){

echo $this -> price "<br/>" ;

return $this -> price ;

}

function getTitle (){

echo $this -> title "<br/>" ;

return $this -> title ;

}

Thành viên public trong PHP

Trừ khi bạn xác định, nếu không thì các thuộc tính (property) và phương thức của một lớp là public Tức là, chúng có 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

Trang 8

 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à các thành viên public Nếu bạn muốn giới hạn truy cập của các thành viên của một lớp, thì bạn định nghĩa thành viên lớp

là private hoặcprotected trong PHP

Thành viên private trong PHP

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

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

đó

class MyClass

private $car = "skoda" ;

$driver = "SRK" ;

function construct ( $par ) {

// Statements here run every time

// an instance of the class

// is created

}

function myPublicFunction ()

return ( "I'm visible!" );

}

private function myPrivateFunction ()

return ( "I'm not visible outside!" );

}

}

Trang 9

Khi 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ẽ không nhận biết hoặc không truy cập tới hàm myPrivateFunction và $car, bởi vì chúng được khai báo là private

Thành viên protected trong PHP

Một thuộc tính hoặc phương thức protected là có thể truy cập trong lớp mà trong đó nó được khai báo, cũng như trong các lớp mà kế thừa từ lớp đó Các thành viên protected là không có sẵn với ngoại vi của hai loại lớp này Một thành viên lớp có 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 $car = "skoda" ;

$driver = "SRK" ;

function construct ( $par ) {

// Statements here run every time

// an instance of the class

// is created

}

function myPublicFunction ()

return ( "I'm visible!" );

}

protected function myPrivateFunction ()

return ( "I'm visible in child class!" );

}

}

Interface trong PHP

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

Trang 10

Như trong PHP 5, nó là có thể để định nghĩa một Interface, giống như:

interface Mail

public function sendMail ();

}

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

class Report implements Mail

// sendMail() Definition goes here

}

Hằng số (Constant) trong PHP

Một constant là một cái 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à không thể thay đổi Một khi bạn khai báo một hằng, nó không 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 ;

function construct ( $incomingValue ) {

// Statements here run every time

// an instance of the class

// is created

}

}

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ẽ không thay đổi trong bất kỳ tình huống nào Ghi nhớ rằng, tên hằng không bắt đầu với

$, như trong tên biến

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

Một lớp trừu tượng là một lớp mà không thể được thuyết minh, chỉ được kế thừa Bạn khai báo

một lớp trừu tượng với từ khóa abstract trong PHP, giống như dưới đây

Trang 11

Khi kế thừa từ một lớp trừu tượng, tất cả phương thức được đánh dấu abstract trong khai báo lớp cha phải được định nghĩa bởi lớp con; ngoài ra, những phương thức này phải được định nghĩa với cùng tính nhìn thấy

abstract class MyAbstractClass

abstract function myAbstractFunction ()

}

}

Ghi chú rằng, các định nghĩa 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 abstract Trong PHP, nó là không hợp lệ nếu bạn có định nghĩa hàm abstract bên trong một lớp non-abstract

Từ khóa static trong PHP

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

Ban thử ví dụ sau:

<? php

class Foo

{

public static $my_static = 'foo' ;

public function staticValue ()

return self :: $my_static ;

}

}

print Foo :: $my_static "\n" ;

$foo = new Foo ();

print $foo -> staticValue () "\n" ;

?>

Trang 12

Từ khóa final trong PHP

PHP 5 giới thiệu từ khóa final, mà ngăn cản các lớp con từ việc ghi đè một phương thức bằng việc

đặt vào trước định nghĩa từ khóa final Nếu chính lớp đó đang được khai bào là final, thì nó không thể được kế thừa

Ví dụ sau tạo Fatal Error: Cannot override final method BaseClass::moreTesting()

<? php

class BaseClass

public function test ()

echo "BaseClass::test() called<br>" ;

}

final public function moreTesting ()

echo "BaseClass::moreTesting() called<br>" ;

}

}

class ChildClass extends BaseClass

public function moreTesting ()

echo "ChildClass::moreTesting() called<br>" ;

}

}

?>

Gọi constructor cha trong PHP

Thay vì viết cả một constructor mới cho lớp con, bạn có 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ần thiết để thuyết minh lớp con này Dưới đây là một ví dụ đơn giản trong PHP

class Name

{

var $_firstName ;

Ngày đăng: 02/12/2017, 20:41

TỪ KHÓA LIÊN QUAN

w