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

yizhihongxing

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日

相关文章

  • php 验证码实例代码

    当开发一些需要用户输入敏感信息的网站时,很有必要在用户提交表单前进行验证码验证,以防止恶意用户通过程序提交大量无效数据。在 PHP 中,我们可以使用一些库或者自己编写代码来生成并验证验证码。 下面我会讲解一些生成验证码的常用方法,以及提供一些生成验证码的示例代码。 生成图形验证码 步骤1:定义一个字符集 我们要生成随机的字符验证码,需要定义一个字符集,可以是…

    PHP 2023年5月23日
    00
  • PHP中使用TCPDF生成PDF文档实例

    下面我将为您详细介绍如何使用TCPDF库在PHP中生成PDF文档,具体步骤如下: 步骤一:下载并安装TCPDF 首先,您需要从TCPDF官网(https://tcpdf.org/)下载最新的TCPDF库,并将解压缩后的文件夹复制到您的项目中。然后,在您的PHP代码中,将TCPDF库引入到您的文件中,例如: require_once(‘path/to/tcpd…

    PHP 2023年5月27日
    00
  • PHP实现与java 通信的插件使用教程

    PHP实现与Java通信的插件使用教程 概述 在Web开发中,PHP和Java是两个非常常用的编程语言,这两种语言经常需要互相通信来完成一些复杂的业务逻辑。本文将介绍PHP如何通过插件与Java进行通信,以解决PHP和Java之间的数据交互问题。 原理 Java语言有一个独特的通信协议,称为Java RMI,简称RMI(Java Remote Method …

    PHP 2023年5月23日
    00
  • php魔术函数__call()用法实例分析

    PHP魔术函数__call()用法实例分析 什么是__call()函数 __call()是PHP中的魔术函数(Magic Method),是在调用一个不存在或不可访问的类方法时,PHP自动调用的一个特殊函数。它允许在运行时动态调用一个不存在的或不可访问的方法。开发人员可以使用这个函数在访问一个不存在的方法时自定义一些操作。 __call()函数的使用 __c…

    PHP 2023年5月26日
    00
  • php单态设计模式(单例模式)实例

    关于“php单态设计模式(单例模式)实例”的完整攻略,我可以提供以下内容: 什么是单例模式? 单例模式是一种常见的设计模式,其核心思想是在整个应用程序中,确保某个类只有一个实例,并且提供单一的全局访问点,以方便其他对象使用。 单例模式的实现方式 单例模式的实现方式有很多种,其中比较常见的实现方式有两种: 饿汉模式 饿汉模式是指在程序启动时就立即加载并创建单例…

    PHP 2023年5月27日
    00
  • PHP执行普通shell命令流程解析

    下面是PHP执行普通shell命令流程解析的完整攻略。 流程解析 PHP执行普通shell命令的流程分为以下几步: 使用PHP的系统调用函数system、exec、shell_exec、passthru或popen来执行shell命令,如:system(‘ls’)。 程序调用系统内核中的execve函数,该函数用于执行指定的可执行文件或shell命令,并将其…

    PHP 2023年5月26日
    00
  • php curl模拟post提交数据示例

    关于“php curl模拟post提交数据示例”的攻略,我来为你详细讲解。 1. 简介 cURL是一种可以通过URL的方式来传输数据的函数库。也就是说,我们可以用它来模拟发送HTTP请求,包括POST和GET请求。而PHP cURL则是一个PHP扩展,提供了与cURL库的接口。 在实际应用中,我们使用cURL来模拟POST请求的场景非常多,比如登录验证、数据…

    PHP 2023年5月23日
    00
  • 中国式家长全学习类安排增加属性一览

    中国式家长全学习类安排增加属性一览 作为家长,为了让孩子能取得好成绩,很多人都喜欢安排各种各样的学习类活动。这些活动不仅考验了孩子的学习能力,也考验了家长的管理能力。为了帮助家长更好地进行管理,我们在学习类活动中增加了属性系统,在此提供完整攻略。 1. 学习类活动 学习类活动是指与学习相关的活动,比如补习班、培训机构等。在进行学习类活动时,我们可以根据不同的…

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