PHP常用的类封装小结【4个工具类】

PHP常用的类封装小结【4个工具类】

在PHP开发中,使用类的封装可以提高代码的复用性、可维护性和可读性。本文介绍了4种常用的PHP类封装,包括:

  • Curl类封装
  • Redis类封装
  • MySQL类封装
  • 日志类封装

下面将详细介绍这4种类的封装方法以及使用场景。

Curl类封装

Curl是一种网络传输工具,PHP中内置了Curl扩展,可以用来发送HTTP请求等。封装Curl类可以减少重复代码,方便使用。以下是Curl类封装的示例代码:

class Curl
{
    public static function get($url, $params = [], $headers = [])
    {
        // 初始化
        $ch = curl_init();

        // 设置URL和其他参数
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        if (!empty($params)) {
            $query = http_build_query($params);
            curl_setopt($ch, CURLOPT_URL, $url . '?' . $query);
        }
        if (!empty($headers)) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        }

        // 执行
        $response = curl_exec($ch);

        // 关闭
        curl_close($ch);

        return $response;
    }

    public static function post($url, $params = [], $headers = [])
    {
        // 初始化
        $ch = curl_init();

        // 设置URL和其他参数
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
        if (!empty($headers)) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        }

        // 执行
        $response = curl_exec($ch);

        // 关闭
        curl_close($ch);

        return $response;
    }
}

使用示例:

$result = Curl::get('https://www.example.com/api', ['page' => 1], ['Authorization: Bearer token']);
echo $result;

$result = Curl::post('https://www.example.com/api', ['username' => 'admin', 'password' => '123456'], ['Authorization: Bearer token']);
echo $result;

Redis类封装

Redis是一种内存数据库,常用于缓存数据等。使用Redis类封装可以方便地连接和操作Redis。以下是Redis类封装的示例代码:

class RedisClient
{
    private $redis;

    public function __construct($host, $port, $password = null, $database = 0)
    {
        $this->redis = new Redis();
        $this->redis->connect($host, $port);
        if (!empty($password)) {
            $this->redis->auth($password);
        }
        $this->redis->select($database);
    }

    public function set($key, $value, $expire = 0)
    {
        $this->redis->set($key, $value);
        if ($expire > 0) {
            $this->redis->expire($key, $expire);
        }
    }

    public function get($key)
    {
        return $this->redis->get($key);
    }

    public function delete($key)
    {
        return $this->redis->del($key);
    }
}

使用示例:

$redis = new RedisClient('127.0.0.1', 6379, 'password', 0);

$redis->set('name', 'John', 3600);
$name = $redis->get('name');
echo $name;

$redis->delete('name');

MySQL类封装

MySQL是一种关系型数据库,使用MySQL类封装可以方便地连接和操作MySQL。以下是MySQL类封装的示例代码:

class MySQLClient
{
    private $mysqli;

    public function __construct($host, $username, $password, $database, $port = 3306)
    {
        $this->mysqli = new mysqli($host, $username, $password, $database, $port);
        if ($this->mysqli->connect_error) {
            throw new Exception($this->mysqli->connect_error);
        }
        $this->mysqli->set_charset('utf8mb4');
    }

    public function query($sql)
    {
        $result = $this->mysqli->query($sql);
        if ($result === false) {
            throw new Exception($this->mysqli->error);
        }
        return $result;
    }

    public function execute($sql)
    {
        $result = $this->mysqli->query($sql);
        if ($result === false) {
            throw new Exception($this->mysqli->error);
        }
        return $this->mysqli->affected_rows;
    }

    public function fetchAll($sql)
    {
        $result = $this->mysqli->query($sql);
        if ($result === false) {
            throw new Exception($this->mysqli->error);
        }
        $rows = [];
        while ($row = $result->fetch_assoc()) {
            $rows[] = $row;
        }
        return $rows;
    }
}

使用示例:

$mysql = new MySQLClient('localhost', 'root', 'password', 'test', 3306);

$result = $mysql->fetchAll('SELECT * FROM users WHERE age > 18');
print_r($result);

$count = $mysql->execute('UPDATE users SET status = 1 WHERE age > 18');
echo $count;

日志类封装

日志记录是一种常见的需求,在PHP开发中经常需要记录各种信息以便于排查问题。使用日志类封装可以方便地记录和管理日志。以下是日志类封装的示例代码:

class Logger
{
    private $file;

    public function __construct($file)
    {
        $this->file = $file;
    }

    public function log($level, $message, $context = [])
    {
        $dateTime = (new DateTime())->format('Y-m-d H:i:s');
        $contextString = '';
        if (!empty($context)) {
            $contextString = json_encode($context, JSON_UNESCAPED_UNICODE);
        }
        $line = sprintf('[%s] [%s] %s %s%s', $dateTime, $level, $message, $contextString, PHP_EOL);
        file_put_contents($this->file, $line, FILE_APPEND);
    }

    public function debug($message, $context = [])
    {
        $this->log('DEBUG', $message, $context);
    }

    public function info($message, $context = [])
    {
        $this->log('INFO', $message, $context);
    }

    public function warning($message, $context = [])
    {
        $this->log('WARNING', $message, $context);
    }

    public function error($message, $context = [])
    {
        $this->log('ERROR', $message, $context);
    }
}

使用示例:

$logger = new Logger('app.log');

$logger->info('User login', ['username' => 'admin']);
$logger->warning('Invalid request', ['ip' => '127.0.0.1']);

以上是4种常用的PHP类封装方法的详细介绍和示例。这些类的封装都可以提高代码的复用性、可维护性和可读性,在使用中可以根据实际情况进行调整和拓展。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP常用的类封装小结【4个工具类】 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 骁龙8gen2和骁龙888性能相差多大 骁龙8gen2和骁龙888对比详解

    骁龙8gen2和骁龙888性能对比 近年来,手机处理器的高速发展使得消费者对高性能处理器的需求越来越大。目前市面上较为知名的处理器品牌为高通,其骁龙系列处理器备受用户青睐。其中骁龙8gen2和骁龙888都是其较为出色的产品。那么,骁龙8gen2和骁龙888的性能相差多大呢?接下来我们将对两者的性能进行详细对比分析。 骁龙8gen2和骁龙888的处理器架构 首…

    PHP 2023年5月27日
    00
  • Linux安装PHP8 新版笔记

    PHP部分   官网下载地址:https://www.php.net/downloads.php   我下载的是此时的最新稳定版8.2.3 cd /usr/localwget https://www.php.net/distributions/php-8.2.3.tar.gz   解压 tar -zxvf php-8.2.3.tar.gz   安装一些必要依…

    PHP 2023年4月17日
    00
  • PHP 数组教程 定义数组

    首先我们来讲解一下“PHP 数组教程 定义数组”的完整攻略: 定义数组 在PHP中,一个数组可以看作是一个有序的键值对序列,可以通过键来访问值,一个简单的数组定义如下: $myArray = array("apple", "banana", "orange"); 这个数组里包含了三个元素:apple…

    PHP 2023年5月26日
    00
  • php伪静态之APACHE篇

    下面是“php伪静态之APACHE篇”的完整攻略: 什么是php伪静态 在讲解php伪静态之前,需要先了解什么是URL重写。URL重写是指将动态的URL通过特定的规则转换成静态的URL,以便用户更好地理解和记忆。而PHP伪静态(也叫伪静态化)是指通过URL重写的方式将动态的PHP网页URL转换成静态的URL,通过这种方式可以隐藏网站的真实地址,提高网站的安全…

    PHP 2023年5月26日
    00
  • php常用数学函数汇总

    PHP常用数学函数汇总 在PHP中,有许多常用的数学函数用于数学计算,下面将总结一些PHP常用的数学函数。 数學函數 abs($number) 函数的功能是取给定数的绝对值。例如: $number = -10; $abs_number = abs($number); echo $abs_number; // 输出 10 round($number, $pre…

    PHP 2023年5月23日
    00
  • PHP中输出转义JavaScript代码的实现代码

    下面是详细讲解 “PHP中输出转义JavaScript代码的实现代码” 的完整攻略: 1. 了解需要转义的字符 在输出JavaScript代码之前,必须先了解JS中需要进行转义的字符,以确保输出的代码能够正常运行。下面是需要转义的字符: 反斜杠 \ 单引号 ‘ 双引号 ” 换行符 \n 回车符 \r 横向制表符 \t 换页符 \f 2. PHP中的转义 PH…

    PHP 2023年5月23日
    00
  • PHP实现数组和对象的相互转换操作示例

    PHP可以通过内置函数实现数组和对象的相互转换,具体过程如下: 1.将数组转换成对象 如果要将PHP数组转换为对象,则需要使用 PHP 内置的 stdClass 类。该类可以实例化一个空的对象,并用数组项给对象属性赋值。示例如下: <?php // 定义一个 PHP 数组 $array = array( ‘name’ => ‘张三’, ‘age’…

    PHP 2023年5月26日
    00
  • 常用PHP框架功能对照表

    首先,我们需要明确什么是PHP框架,以及常用的PHP框架有哪些。PHP框架是一种基于PHP语言的开发框架,通过提供一定的框架、结构和规范,使得应用程序的开发更加简单、快捷、可维护,同时也提高了开发人员对于业务逻辑的抽象和设计能力。常用的PHP框架有Laravel、Symfony、Yii、CodeIgniter等。 “常用PHP框架功能对照表”是对比分析多个框…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部