Các kiểu lập trình trong PHP (Phần 2)

Lập trình hướng đối tượng: là kiểu lập trình dựa trên một nền tảng các class đã được xây dựng sẵn.

2. Lập trình hướng đối tượng:
Lập trình hướng đối tượng: là kiểu lập trình dựa trên một nền tảng các class đã được xây dựng sẵn.
Trong ví dụ của lập trình hướng thủ tục trên chúng ta từng bước giải quyết các vấn đề sau đó tối ưu mã nguồn để đạt được một đoạn mã nguồn xử lý tốt nhất.
Nhưng trong lập trình hướng đối tượng thì ngược lại. Chúng ta phải xác định trước những chức năng cần thiết để xử lý vấn đề. Sau đó xây dựng lớp chứa các phương thức với các chức năng đã xác định. Việc xác định các chức năng cần thiết không phải dễ dàng cho các lập trình viên vì điều này đòi hỏi lập trình viên phải nhiều kinh nghiệm thực tế trong quá trình xử lý hướng thủ tục.
Ví dụ: Xây dựng một lớp Upload với các yêu cầu sau:
- Upload một tập tin bất kỳ
- Thư mục chứa tập tin sẽ upload
- Kiểm tra phần mở rộng của tập tin
- Kiểm tra kích thước tập tin upload
- Thay đổi tên tập tin upload
Qua yêu cầu chúng ta cần xác định các phương thức cơ bản của lớp
- Nhận tập tin upload
- Kiểm tra điều kiện upload
< div>o Kích thước của tập tin < div>o Kiểu mở rộng của tập tin
- Upload tập tin: giữ nguyên tên của tập tin gốc và thay đổi tập tin gốc
Trong phần nay chúng ta chỉ xây dựng lớp Upload đơn giản, chúng ta sẽ chưa quan tâm đến cách viết đúng chuẩn của lập trình hướng đối tượng vì chúng ta đang hiểu về sự khác nhau của 2 kiểu lập trình thông dụng
Bước 1: Xác định thuộc tính và phương thức
Thuộc tính:
- Tên của tập tin ($_fileName)
- Kích thước tối đa được phép upload ($_fileSize)
- Phần mở rộng của các tập tin được phép upload ($_fileExtension)
- Tập tin tạm trước khi upload lên server ($_fileTmp)
- Thư mục chứa tập tin upload ($_uploadDir)
Phương thức:
- Phương thức khởi tạo ( __construct() )
- Phương thức thiết lập kích thước tập tin upload (setFileSize() )
- Phương thức thiết lập phần mở rộng của tập tin upload (setFileExtension() )
- Phương thức thiết lập thư mục upload tập tin (setUploadDir() )
- Phương thức kiểm tra tất cả các điều kiện của tập tin upload ( isVail() )
- Phương thức upload tập tin ( upload() )
Bước 2: Xây dựng khung sườn cho lớp
<?php
class Upload{
	// Bien luu tru ten tap tin upload
	var $_fileName;
	
	//Bien luu tru kich thuoc cua tap tin upload
	var $_fileSize;
	
	//Bien luu tru phan mo rong cua tap tin upload
	var $_fileExtension;
	
	//Bien luu tru duong dan cua thu muc tam tap tin upload
	var $_fileTmp;
	
	//Bien luu tru duong tren server cua tap tin upload
	var $_uploadDir;
	
	//Bien luu tru error 
	var $_errors;
	
	//Ham khoi tao doi tuong
	function __construct($file_name){		
		
	}
	
	//Ham lay thanh phan mo rong cua tap tin upload
	function getFileExtension(){
		
	}
	
	//Ham thiet lap thanh phan mo rong tap tin upload
	function setFileExtension($value){
		
	}
	
	//Ham thiet lap kich thuoc tap tin upload
	function setFileSize($value){
		
	}
	
	//Ham thiet lap kich thuoc tap tin upload
	function setUploadDir($value){
		
	}
	
	//Ham kiem tra dieu kien upload
	function isVail(){
		
	}
	
	//Ham upload tap tin
	function upload($rename =  false, $prefix = 'file_'){
		
	}
}
Bước 3: Xây dựng chi tiết các phương thức xử lý
<?php
//upload.class.php
class Upload{
	// Bien luu tru ten tap tin upload
	var $_fileName;
	
	//Bien luu tru kich thuoc cua tap tin upload
	var $_fileSize;
	
	//Bien luu tru phan mo rong cua tap tin upload
	var $_fileExtension;
	
	//Bien luu tru duong dan cua thu muc tam tap tin upload
	var $_fileTmp;
	
	//Bien luu tru duong tren server cua tap tin upload
	var $_uploadDir;
	
	//Bien luu tru error 
	var $_errors;
	
	//Ham khoi tao doi tuong
	function __construct($file_name){
		//echo __METHOD__;
		
		$fileInfo =  $_FILES[$file_name];
		$this->_fileName = $fileInfo['name'];
		$this->_fileSize = $fileInfo['size'];
		$this->_fileExtension = $this->getFileExtension();
		$this->_fileTmp = $fileInfo['tmp_name'];
		
	}
	
	//Ham lay thanh phan mo rong cua tap tin upload
	function getFileExtension(){
		$subject = $this->_fileName;	
		$pattern = '#\\.([^\\.]+)$#i';	
		preg_match($pattern,$subject,$matches);
		return $matches[1];
	}
	
	//Ham thiet lap thanh phan mo rong tap tin upload
	function setFileExtension($value){
		$subject = $this->_fileExtension;	
		$pattern = '#(' . $value . ')#i';	
		if(preg_match($pattern,$subject,$matches)!= 1){
			$this->_errors[] = 'Phan mo rong khong phu hop';
		}
	}
	
	//Ham thiet lap kich thuoc tap tin upload
	function setFileSize($value){
		$size = $value * 1024;
		if($this->_fileSize > $size){
			$this->_errors[] = 'Kich thuoc tap tin lon hon ' . $size . 'kb';
		}	
	}
	
	//Ham thiet lap kich thuoc tap tin upload
	function setUploadDir($value){
		if(file_exists($value)){
			$this->_uploadDir = $value;
		}else{
			$this->_errors[] = 'Thu muc khong he ton tai';
		}
	}
	
	//Ham kiem tra dieu kien upload
	function isVail(){
		$flagErr = false;
		if(count($this->_errors)>0){
			$flagErr =  true;
		}
		
		return $flagErr;
	}
	
	//Ham upload tap tin
	function upload($rename =  false, $prefix = 'file_'){
		if($rename ==  false){
			$source = $this->_fileTmp;
			$dect = $this->_uploadDir . $this->_fileName;
		}else{
			$source = $this->_fileTmp;
			$dect = $this->_uploadDir . $prefix . time() . '.' . $this->_fileExtension;
		}
		copy($source,$dect);
	}
}
Bước 4: Sử dụng lớp
Tạo tập tin upload.php
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Upload form</title>
    </head>

    <body>
        <h1>Upload hình ảnh</h1>
        <form id="myForm" name="myForm" method="post" enctype="multipart/form-data" action="process.php">
            <input type="file" name="picture" id="picture"></input>
            <br></br>
            <input type="submit" name="button" id="button" value="Submit"></input>
        </form>
    </body>
</html>
Tạo tập tin process.php
<?php
 
 include 'upload.class.php';
 
 $upload  = new Upload('picture');
 $upload->setUploadDir('images/');
 if($upload->isVail() == true){
 	echo "<pre>";
 	print_r($upload->_errors);
 	echo "</pre>";
 }else{
 	$upload->upload(true,'pic_');
 }

Thanh toán:

Trao đổi backlink :
thiet ke website binh duong | thiết kế web tại bình dương |

thiết kế website b�nh dương | thiet ke website binh duong | thiết kế web b�nh dương | thiết kế web tại b�nh dương | thiết kế web tại b�nh dương | quang cao google tai binh duong | quang ba web o binh duong |