php 常用方法封装

/**
 * 获取post请求的参数
 */
function getPostParam($paramKey, $nullAble = false, $checkArray = false, $checkType = false)
{
    $errorMsg = "";
    $data     = @$_POST[$paramKey];
    if (is_null($data)) {
        if (!$nullAble) {
            $errorMsg = '缺少参数:' . $paramKey;
        }
    } else if ($checkArray) {
        if (!in_array($data, $checkArray)) {
            $errorMsg = '参数:' . $paramKey . '取值范围有误';
        }
    } else if ($checkType) {
        switch ($checkType) {
            case 'numeric':
                $errorMsg = is_numeric($data) ? "" : "参数类型错误numeric";
                break;

            case 'bool':
                $errorMsg = is_bool($data) ? "" : "参数类型错误bool";
                break;

            case 'float':
                $errorMsg = is_float($data) ? "" : "参数类型错误float";
                break;

            case 'int':
                $errorMsg = is_int($data) ? "" : "参数类型错误int";
                break;

            case 'string':
                $errorMsg = is_string($data) ? "" : "参数类型错误string";
                break;

            case 'object':
                $errorMsg = is_object($data) ? "" : "参数类型错误object";
                break;

            case 'array':
                $errorMsg = is_array($data) ? "" : "参数类型错误array";
                break;

            default:
                # code...
                break;
        }
    }
    if (!empty($errorMsg)) {
        ob_start();
        errJson($errorMsg, 1002);
        ob_end_flush();
        exit;
    }
    return $data;
}

/**
 * 返回错误信息
 */
function errJson($errorMsg, $errorCode = '0')
{
    header('Content-type: application/json');
    $outPutArray = array('status' => 'error', 'msg' => $errorMsg, 'errorCode' => $errorCode, 'timeStamp' => time());
    echo json_encode($outPutArray, JSON_UNESCAPED_UNICODE);
    exit();
}

/**
 * Notes: 传入数组返回成功的json格式
 */
function reJson($jsonArray)
{
    header('Content-type: application/json');
    $outPutArray = array('status' => 'OK', 'data' => $jsonArray, 'code' => 200, 'timeStamp' => time());
    echo json_encode($outPutArray, JSON_UNESCAPED_UNICODE);
    exit();
}

/**
 * 对数据进行脱敏
 * @param string $data
 * @param int $start  保留数据的前几位
 * @param int $end 保留数据的后几位
 * @param string $char 替换的字符
 */
function filter_repeat($data, $start = 4 , $end = 4, $char = '*')
{
    $len = mb_strlen($data);
    if(!$data || $len < $start + $end ){
        return $data;
    }
    $startStr = mb_substr($data, 0, $start);
    if(($start + $end) == $len){
        // 放弃尾部数据
        return $startStr . str_repeat($char, $len - $start);
    }
    $endStr = mb_substr($data,0 - $end);
    return $startStr . str_repeat($char, $len - $start - $end) . $endStr;
}
// string(30) "各种身份******敏感信息"
var_dump(filter_repeat('各种身份证姓名电话等敏感信息', 4, 4));

/**
 * 生成一个随机的字符串
 */
function random_string($type = 'alnum', $len = 8)
{
    switch ($type)
    {
        case 'basic':
            return mt_rand();
        case 'alnum':
        case 'numeric':
        case 'nozero':
        case 'alpha':
            switch ($type)
            {
                case 'alpha':
                    $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
                    break;
                case 'alnum':
                    $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
                    break;
                case 'numeric':
                    $pool = '0123456789';
                    break;
                case 'nozero':
                    $pool = '123456789';
                    break;
            }
            return substr(str_shuffle(str_repeat($pool, ceil($len / strlen($pool)))), 0, $len);
        case 'unique': // todo: remove in 3.1+
        case 'md5':
            return md5(uniqid(mt_rand()));
        case 'encrypt': // todo: remove in 3.1+
        case 'sha1':
            return sha1(uniqid(mt_rand(), TRUE));
    }
}

/**
 * [write_log 写入日志]
 * @param  [type] $data [写入的数据]
 * @return [type]       [description]
 */
/**
 * [write_log 写入日志]
 * @param  [type] $data [写入的数据]
 * @return [type]       [description]
 */
function write_log($data){ 
    $years = date('Y-m');
    //设置路径目录信息
    $url = './public/log/txlog/'.$years.'/'.date('Ymd').'_request_log.txt';  
    $dir_name=dirname($url);
    //目录不存在就创建
    if(!file_exists($dir_name))
    {
        //iconv防止中文名乱码
        $res = mkdir(iconv("UTF-8", "GBK", $dir_name),0777,true);
    }
    $fp = fopen($url,"a");//打开文件资源通道 不存在则自动创建       
    fwrite($fp,date("Y-m-d H:i:s").var_export($data,true)."\r\n");//写入文件
    fclose($fp);//关闭资源通道
}

$data = ['status'=>2, 'message'=>'ssfs'];
write_log($data);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于PHP代码封装的问题,我可以给您一些建议和示例。 在PHP中,代码封装通常是指将一些常用的、重复性的代码封装成函数或类,方便在程序中进行调用和使用。通过封装,我们可以提高代码的复用性和可维护性,同时也可以提高程序的执行效率和安全性。 下面是一个简单的PHP代码封装的示例,假设我们需要在程序中获取当前页面的URL地址: ```php function get_current_url() { $url = 'http'; if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) { $url .= 's'; } $url .= '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; return $url; } ``` 在上面的代码中,我们定义了一个名为get_current_url()的函数,用于获取当前页面的URL地址。该函数通过判断当前页面是否使用了HTTPS协议,然后拼接出相应的URL地址并返回。 在程序中使用该函数时,只需要简单地调用即可: ```php $current_url = get_current_url(); echo $current_url; ``` 通过封装,我们可以避免在程序中多次重复编写获取当前页面URL地址的代码,提高了代码的复用性和可维护性。 除了函数封装外,我们还可以使用类的方式进行代码封装。类封装的方式通常适用于需要进行复杂操作和状态管理的场景,比如数据库操作、文件处理等。下面是一个简单的数据库操作类的示例: ```php class Database { private $host; private $user; private $password; private $database; private $connection; public function __construct($host, $user, $password, $database) { $this->host = $host; $this->user = $user; $this->password = $password; $this->database = $database; $this->connect(); } public function connect() { $this->connection = mysqli_connect($this->host, $this->user, $this->password, $this->database); if (!$this->connection) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } } public function query($sql) { $result = mysqli_query($this->connection, $sql); if (!$result) { die('Query Error (' . mysqli_errno($this->connection) . ') ' . mysqli_error($this->connection)); } return $result; } public function close() { mysqli_close($this->connection); } } ``` 在上面的代码中,我们定义了一个名为Database的类,用于进行数据库连接和查询操作。该类包含了一些私有属性和公有方法,其中构造函数用于初始化数据库连接参数,connect()方法用于连接数据库,query()方法用于执行SQL语句,close()方法用于关闭数据库连接。 在程序中使用该类时,只需要简单地进行实例化和调用即可: ```php $db = new Database('localhost', 'username', 'password', 'database'); $result = $db->query('SELECT * FROM table'); while ($row = mysqli_fetch_assoc($result)) { // do something with $row } $db->close(); ``` 通过类的方式进行代码封装,我们可以将数据库操作的相关代码封装在一起,方便进行调用和管理,并且可以提高程序的安全性和可维护性。 总之,代码封装是一个非常重要的开发原则,通过封装可以提高代码的复用性、可维护性和安全性,建议在日常开发中多加使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值