Thứ Năm, 29 tháng 9, 2016

PHP NÂNG CAO-Lập trình hướng đối tượng, các khái niệm cơ bản

Nói theo khái niệm dài dòng thì lập trình hướng đối tượng khá là trừu tượng  thế thì đơn giản thôi, chúng ta cứ hiểu nó một cách nôm na như thế này. 
Nếu như bình thường chúng ta viết code theo hướng "thủ tục" là chúng ta sẽ code một cách bừa bãi không theo một chuẩn nào đó. Chẳng hạn như khi chúng ta kết nối đến cơ sở dữ liệu cứ khi nào truy vấn database là chúng ta lại viết câu lệnh kết nối sau đó là các câu lệnh truy vấn ...
Việc chúng ta viết code một cách bừa bãi dẫn đến việc chúng ta khó quản lý, nó không theo một chuẩn mực nào cả cho nên khi chúng ta làm việc một team với nhau việc người này ngồi mò lại code người kia xem nó nằm ở đâu, nó kết nối từ file nào ... nó giống như một "cực hình" vậy 

Ah, như vậy là chúng ta thấy việc bất tiện của việc code thủ tục, do vậy cộng đồng họ đã xây dựng nên phương pháp code chung. Làm sao để cho tất cả các lập trình viên trong nhóm có thể dễ dàng làm việc với nhau cho nên lập trình hướng đối tượng được sinh ra để giải quyết vấn đề này.

Hehe, như vậy thì đã xong vấn đề về lập trình hướng đối tượng rùi nhé. Lập trình hướng đối tượng là "Hướng các đối tượng lại với nhau". Đó là lý thuyết, vậy còn áp dụng nó vào trong ngôn ngữ lập trình thì sao? 

Trong PHP lập trình hướng đối tượng sẽ được tái hiện bởi một class, class này sẽ có các hàm, các biến được viết ra tùy theo ý đồ của lập trình viên. Class này được viết ra để sử dụng đi sử dụng lại nhiều lần. Giống như chúng ta kết nối cơ sở dữ liệu vậy, chúng ta sẽ viết ra một class là databaseđể kết nối CSDL khi nào chúng ta cần kết nối thì chỉ việc gọi class database này ra thôi. Đơn giản hơn rất nhiều phải không nào?

1. Class trong PHP

Trong PHP class được khai báo như sau
1
2
3
4
5
6
7
8
9
10
11
<?php
class tên_class{
 
    cơ chế $thuộc_tính;
    cơ chế $thuộc_tính;
    cơ chế phương_thưc_1(){
    }
    cơ chế phương_thưc_2(){
    }
}
?>
Ví dụ : Hay chúng ta xét
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Nguoi{
 
    public $ten = "haanhdon";
    private $tuoi = "20";
    public nghe_nghiep(){
       // Lập trình viên
    }
    private trang_thai(){
       // Forever alone :P
    }
}
?>
Chúng ta thấy trước mỗi thuộc tính ( tên, tuổi ) và phương thức ( nghề nghiệp, tình trạng hôn nhân) đều có các cơ chế, Public là cơ chế mở nôm na nó là công khai ai cũng biết nghề nghệp của tôi là gì. Còn với private nó là cơ chế đóng như là tôi không công khai tuổi của tôi cho các bạn biết vậy

2. Thuộc tính trong Class
Thuộc tính trong Class chính là các biến của một class, như ở ví dụ trên thì chúng ta sẽ có 2 thuộc tính là
1
2
3
4
<?php
 public $ten = "haanhdon";
 private $tuoi = "20";
?>
Ở trước các thuộc tính sẽ có các cơ chế cho các thuộc tính này
- Public là cơ chế mở 
- Private và Protected là cơ chế đóng 

3. Phương thức trong Class

Phương thức trong class chính là các hàm (function) của một class
1
2
3
4
5
6
7
8
<?php
    public nghe_nghiep(){
       // Lập trình viên
    }
    private trang_thai(){
       // Forever alone :P
    }
?>
Tương tự như các thuộc tính, trước mỗi phương thức sẽ có các cơ chế đi kèm quy định cơ chế cho các thuộc tính này

4. Đối tượng trong Class
Đối tượng trong class là việc chúng ta thể hiện lại một lớp, tức là sao? đối tượng chính là việc chúng ta lấy các các class mà chúng ta đã viết ra để sử dụng, ví dụ

- Cú pháp khởi tạo một đối tượng $tên_đối_tương = new tên_class(); 
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Nguoi{
 
    public $ten = "haanhdon";
    public $tuoi = "20";
    public nghe_nghiep(){
       // Lập trình viên
    }
    public trang_thai(){
       // Forever alone :P
    }
}
?>
1
2
3
4
5
6
7
8
9
<?php
 
$db = new Nguoi(); // Khởi tạo đối tượng $db.
echo $db->ten; // Lấy ra giá trị của thuộc tính
echo $db->tuoi; // Lấy ra giá trị của thuộc tính
 
$job = $db->nghe_nghiep(); // Lấy kết quả trả về của phương thức
$status = $db->trang_thai(); // Lấy kết quả trả về của phương thức
?>
Các bạn chú ý, khác với cách viết thủ tục trong lập trình hướng đối tượng thì đối tượng sẽ sử dụng dấu "mũi tên" để truy xuất đến các thuộc tính và phương thức của mình nhé

Ngoài ra trong lập trình hướng đối tượng chúng ta sẽ thấy có phương thức $this , phương thức $this này được hiều là "chính nó" ( chính class hiện tại, cụ thể là class Nguoi). chúng ta xét ví dụ sau 
1
2
3
4
5
6
7
8
9
10
11
12
<?php
class Nguoi{
 
    public $ten = "haanhdon";
    private $tuoi = "20";
    public nghe_nghiep(){
       return "Xin chào, tên tôi là ".$this->ten." và tôi là một lập trình viên";
    }
}
$db = new Nguoi();
echo $db->nghe_nghiep();
?>
Chúng ta thấy là chúng ta sẽ đang gọi thuộc tính $ten và phương thức nghe_nghiep() để sử dụng bằng phương thức $this. Cũng dễ hiểu phải không nào.
nguồn: http://phpandmysql.net/


EmoticonEmoticon