• RSS
  • Facebook NIIT
  • Twitter
Viết bởi nguyen thuy lam

Hôm nay chúng ta sẽ học tiếp phần 2 của:  “CÁC KIỂU LẬP TRÌNH TRONG PHP”

Học PHP, Học Lập trình PHP, Lập trình PHP
Học PHP, Lập trình PHP



2. Tổng quan về 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 chúng ta đã học ở bài trchú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

//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_');
 }

Như vậy là chúng ta đã cùng nhau tìm hiểu xong 2 kiểu lập trình trong PHP. Bạn nào muốn quan tâm hơn nữa tới ngôn ngữ lập trình này thì có thể tham khảo khóa học Lập trình web với PHP& MySQL tại học viện iNET.

Mọi chị tiết liên hệ: Ms Lâm: 0904 936 399