亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 27
粉絲 1
評論 0
訪問量 27590
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
異常處理機制,文件上傳-2019年10月12日
思杰的博客
原創(chuàng)
783人瀏覽過

1. 寫一個自定義異常類來處理上傳過程以及各種錯誤 

2. (選做) 寫一個與指定數據表綁定的類, 實現基本的模型功能,例如查詢, 新增, 更新,刪除等操作


課程筆記:

        我們用php中專門用來處理錯誤的類,異常類Exception。有兩個參數,第一個是提示信息,第二個是自定義的錯誤代碼。我們可以通過自定義一個雷去繼承異常類,來自定義我們提示錯誤的代碼。

        上傳文件需要用表單提交,請求類型必須是post,數據編碼類型是復合類型。PHP使用一個超全局變量$_FILES來處理文件上傳。

        允許上傳的文檔類型,上傳文件的最大長度,上傳到服務器的指定目錄路徑。是通過三個變量將我們設置的參數設置進去。

        判斷文件是否上傳成功,通過$_FILES里面的error這個鍵來判斷文件是否上傳成功,當返回值是0,則代表上傳成功,如果不等于0說明出錯。

        判斷文件擴展名是否正確,通過explode函數將文件名分割,然后得到他的拓展名,看看是否在自己設置的文檔類型里面


寫一個自定義異常類來處理上傳過程以及各種錯誤 


實例

<?php
namespace _1012_4;
//自定義類
use Exception;

class CalException extends Exception
{
    public function __construct($message = "", $code = 0)
    {
        parent::__construct($message, $code);
    }

    public function errorInfo()
    {
        return <<<"error"
<h2>
<strong>{$this->getCode()}:</strong>
<span style="color: red;">{$this->getMessage()}</span>
</h2>
error;

    }

    public function __toString()
    {
        parent::__toString(); // TODO: Change the autogenerated stub
    }
}

try{

    //文件上傳

//1.配置上傳參數
//允許上傳的文檔類型
    $fileType = ['jpg','jpeg','png','gif'];
//允許上傳的文件最大長度
    $fileSize = 3145728;

//上傳到服務器上的指定目錄
    $filePath = '/uploads/';
//原始文件名
    $filename = $_FILES['my_file']['name'];
//臨時文件名
    $tmpfilename = $_FILES['my_file']['tmp_name'];


//判斷文件是否上傳成功
    $uploadError = $_FILES['my_file']['error'];
    if($uploadError>0){
        switch ($uploadError){
            case 1:
            case 2:throw new CalException('上傳文檔不允許超過3M<br>',101);
            case 3:throw new CalException('上傳文件不完整<br>',102);
            case 4:throw new CalException('沒有文件被上傳<br>',103);
            default:throw new CalException('異常錯誤<br>',107);
        }
    }

//判斷文件拓展名是否正確
    $extension = explode('.',$filename)[1];
    if(!in_array($extension,$fileType)){
//    die('不允許上傳'.$extension.'文件類型');
        throw new CalException('不允許上傳'.$extension.'文件類型<br>',104);
    }

//把文件重命名,防止命名重復:md5+時間戳
    $filename = date('YmdHis',time()).md5(mt_rand(1,99)).'.'.$extension;

//上傳文件

    if (is_uploaded_file($tmpfilename)){
        if (move_uploaded_file($tmpfilename,__DIR__.$filePath.$filename)){
            echo '<script>alert("上傳成功");history.back();</script>';
        }else{
//        die('文件無法移動到指定目錄,請檢查目錄權限');
            throw new CalException('文件無法移動到指定目錄,請檢查目錄權限<br>',105);
        }
    }else{
//    die('非法操作');
        throw new CalException('非法操作<br>',106);
    }


}catch (CalException $e){
   echo  $e->errorInfo();
}

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

在老師上課講的上傳文件的基礎上,我們加入自己的一個錯誤異常類,然后在每個die語句后面拋出異常,然后用try,catch語句獲取錯誤信息,并且顯示在頁面上

微信截圖_20191023001241.png

寫一個與指定數據表綁定的類, 實現基本的模型功能,例如查詢, 新增, 更新,刪除等操作

類名與表名要對應,類中的屬性要與表中的字段對應。

實例

<?php
namespace _1012;
use PDO;
//類名和表名要對應起來
class staff{
    //類屬性要與表中的字段對應
    private $staff_id;
    private $name;
    private $age;
    private $sex;
    private $position;
    private $hiredate;

    //屬性重載
    public function __get($name)
    {
        return $this->$name;

    }

    public function __set($name, $value)
    {
        $this->$name = $value;
    }

    public function __construct()
    {
        $this->hiredate = date('Y/m/d',$this->hiredate);
        $this->sex = $this->sex ? '男':'女';
    }
}

$pdo = new PDO('mysql:host=127.0.0.1;dbname=huangsijie','root','root');

//查詢
$stmt = $pdo->prepare('select * from `staff`');
$stmt->setFetchMode(PDO::FETCH_CLASS,staff::class);
$stmt->execute();
while ($staff = $stmt->fetch()){
    echo "<li>{$staff->staff_id}:{$staff->name}-----{$staff->position}</li>";
}

//刪除
$stmt = $pdo->prepare('delete from `staff` where staff_id=1');
$stmt->setFetchMode(PDO::FETCH_CLASS,staff::class);
$stmt->execute();
echo $stmt->rowCount();


//修改
$stmt = $pdo->prepare('update `staff` set sex = "2" where staff_id =2');
$stmt->setFetchMode(PDO::FETCH_CLASS,staff::class);
$stmt->execute();
echo  $stmt->rowCount();

//增加
$stmt = $pdo->prepare('insert into  `staff` (staff_id,name,age,sex) values (1,"黃思杰",22,"1")');
$stmt->setFetchMode(PDO::FETCH_CLASS,staff::class);
$stmt->execute();
echo  $stmt->rowCount();

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

這里用了簡單的四個語句把增刪改查,后期如果可以的話,應該把這四個語句放進一個db類里,通過調用對象的方法去實現這些功能。

批改狀態(tài):合格

老師批語:還在寫之前的作業(yè), 趕緊喲
本博文版權歸博主所有,轉載請注明地址!如有侵權、違法,請聯系admin@php.cn舉報處理!
全部評論 文明上網理性發(fā)言,請遵守新聞評論服務協議
0條評論
關于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網:公益在線php培訓,幫助PHP學習者快速成長!
關注服務號 技術交流群
PHP中文網訂閱號
每天精選資源文章推送
PHP中文網APP
隨時隨地碎片化學習
PHP中文網抖音號
發(fā)現有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號

  • 登錄PHP中文網,和優(yōu)秀的人一起學習!
    全站2000+教程免費學