0

0

php通用图片处理类的用法

墨辰丷

墨辰丷

发布时间:2018-06-12 09:39:31

|

2266人浏览过

|

来源于php中文网

原创

这篇文章主要介绍了php实现的通用图片处理类,可实现针对图片的缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色等功能,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了php实现的通用图片处理类。分享给大家供大家参考。具体如下:

该图片处理函数功能:缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色,处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片,命名方式可以考虑在原图片的基础上加上步骤,例如:图片名称+__第几步。 在一些需要图片高级处理功能的Web应用中,可以参考这个类。

<?php
class picture
{
  var $PICTURE_URL;//要处理的图片
  var $DEST_URL="temp__01.jpg";//生成目标图片位置
  var $PICTURE_CREATE;//要创建的图片
  var $TURE_COLOR;//新建一个真彩图象
  var $PICTURE_WIDTH;//原图片宽度
  var $PICTURE_HEIGHT;//原图片高度
/*
水印的类型,默认的为水印文字
*/
  var $MARK_TYPE=1;
  var $WORD;//经过UTF-8后的文字
  var $WORD_X;//文字横坐标
  var $WORD_Y;//文字纵坐标
  var $FONT_TYPE;//字体类型
  var $FONT_SIZE="12";//字体大小
  var $FONT_WORD;//文字
  var $ANGLE=0;//文字的角度,默认为0
  var $FONT_COLOR="#000000";//文字颜色
  var $FONT_PATH="font/simkai.ttf";//字体库,默认为宋体
  var $FORCE_URL;//水印图片
  var $FORCE_X=0;//水印横坐标
  var $FORCE_Y=0;//水印纵坐标
  var $FORCE_START_X=0;//切起水印的图片横坐标
  var $FORCE_START_Y=0;//切起水印的图片纵坐标
  var $PICTURE_TYPE;//图片类型
  var $PICTURE_MIME;//输出的头部
/*
缩放比例为1的话就按缩放高度和宽度缩放
*/
  var $ZOOM=1;//缩放类型
  var $ZOOM_MULTIPLE;//缩放比例
  var $ZOOM_WIDTH;//缩放宽度
  var $ZOOM_HEIGHT;//缩放高度
/*
裁切,按比例和固定长度、宽度
*/
  var $CUT_TYPE=1;//裁切类型
  var $CUT_X=0;//裁切的横坐标
  var $CUT_Y=0;//裁切的纵坐标
  var $CUT_;//裁切的宽度
  var $CUT_HEIGHT=100;//裁切的高度
/*
锐化
*/
  var $SHARP="7.0";//锐化程度
/*
透明度处理
*/
  var $ALPHA='100';//透明度在0-127之间
  var $ALPHA_X="90";
  var $ALPHA_Y="50";
/*
任意角度旋转
*/
  var $CIRCUMROTATE="90.0";//注意,必须为浮点数
/*
出错信息
*/
  var $ERROR=array(
    'unalviable'=>'没有找到相关图片!'
  );
/*
构造函数:函数初始化
*/
  function __construct($PICTURE_URL)
  {
    $this->get_info($PICTURE_URL);
  }
  function get_info($PICTURE_URL)
  {
    /*
    处理原图片的信息,先检测图片是否存在,不存在则给出相应的信息
    */
    @$SIZE=getimagesize($PICTURE_URL);
    if(!$SIZE)
    {
      exit($this->ERROR['unalviable']);
    }
    //得到原图片的信息类型、宽度、高度
    $this->PICTURE_MIME=$SIZE['mime'];
    $this->PICTURE_;
    $this->PICTURE_HEIGHT=$SIZE[1];
    //创建图片
    switch($SIZE[2])
    {
      case 1:
        $this->PICTURE_CREATE=imagecreatefromgif($PICTURE_URL);
        $this->PICTURE_TYPE="imagejpeg";
        $this->PICTURE_EXT="jpg";
        break;
      case 2:
        $this->PICTURE_CREATE=imagecreatefromjpeg($PICTURE_URL);
        $this->PICTURE_TYPE="imagegif";
        $this->PICTURE_EXT="gif";
        break;
      case 3:
        $this->PICTURE_CREATE=imagecreatefrompng($PICTURE_URL);
        $this->PICTURE_TYPE="imagepng";
        $this->PICTURE_EXT="png";
        break;
    } 
    /*
    文字颜色转换16进制转换成10进制
    */
    preg_match_all("/([0-f]){2,2}/i",$this->FONT_COLOR,$MATCHES);
    if(count($MATCHES)==3)
    {
      $this->RED=hexdec($MATCHES[0][0]);
      $this->GREEN=hexdec($MATCHES[0][1]);
      $this->BLUE=hexdec($MATCHES[0][2]);
    }
  }
  //end of __construct
  /*
  将16进制的颜色转换成10进制的(R,G,B)
  */
  function hex2dec()
  {
    preg_match_all("/([0-f]){2,2}/i",$this->FONT_COLOR,$MATCHES);
    if(count($MATCHES)==3)
    {
      $this->RED=hexdec($MATCHES[0][0]);
      $this->GREEN=hexdec($MATCHES[0][1]);
      $this->BLUE=hexdec($MATCHES[0][2]);
    }
  }
  //缩放类型
  function zoom_type($ZOOM_TYPE)
  {
    $this->ZOOM=$ZOOM_TYPE;
  }
  //对图片进行缩放,如果不指定高度和宽度就进行缩放
  function zoom()
  {
    //缩放的大小
    if($this->ZOOM==0)
    {
      $this->ZOOM_;gt;PICTURE_WIDTH * $this->ZOOM_MULTIPLE;
      $this->ZOOM_HEIGHT=$this->PICTURE_HEIGHT * $this->ZOOM_MULTIPLE;
    }
    //新建一个真彩图象
    $this->TRUE_COLOR=imagecreatetruecolor($this->ZOOM_WIDTH,$this->ZOOM_HEIGHT);
    $WHITE=imagecolorallocate($this->TRUE_COLOR,255,255,255);
    imagefilledrectangle($this->TRUE_COLOR,0,0,$this->ZOOM_WIDTH,$this->ZOOM_HEIGHT,$WHITE);
    imagecopyresized($this->TRUE_COLOR,$this->PICTURE_CREATE,0,0,0,0,$this->ZOOM_WIDTH,$this->ZOOM_HEIGHT,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  }
  //end of zoom
  //裁切图片,按坐标或自动
  function cut()
  {
    $this->TRUE_COLOR=imagecreatetruecolor($this->CUT_WIDTH,$this->CUT_WIDTH);
    imagecopy($this->TRUE_COLOR,$this->PICTURE_CREATE, 0, 0, $this->CUT_X, $this->CUT_Y,$this->CUT_WIDTH,$this->CUT_HEIGHT);
  }
  //end of cut
  /*
  在图片上放文字或图片
  水印文字
  */
  function _mark_text()
  {
    $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
    $this->WORD=mb_convert_encoding($this->FONT_WORD,'utf-8','gb2312');
    /*
    取得使用 TrueType 字体的文本的范围
    */
    $TEMP = imagettfbbox($this->FONT_SIZE,0,$this->FONT_PATH,$this->WORD);
    $WORD_LENGTH=strlen($this->WORD);
    $WORD_WIDTH =$TEMP[2] - $TEMP[6];
    $WORD_HEIGHT =$TEMP[3] - $TEMP[7];
    /*
    文字水印的默认位置为右下角
    */
    if($this->WORD_X=="")
    {
      $this->WORD_X=$this->PICTURE_WIDTH-$WORD_WIDTH;
    }
    if($this->WORD_Y=="")
    {
      $this->WORD_Y=$this->PICTURE_HEIGHT-$WORD_HEIGHT;
    }
    imagesettile($this->TRUE_COLOR,$this->PICTURE_CREATE);
    imagefilledrectangle($this->TRUE_COLOR,0,0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT,IMG_COLOR_TILED);
    $TEXT2=imagecolorallocate($this->TRUE_COLOR,$this->RED,$this->GREEN,$this->Blue);
    imagettftext($this->TRUE_COLOR,$this->FONT_SIZE,$this->ANGLE,$this->WORD_X,$this->WORD_Y,$TEXT2,$this->FONT_PATH,$this->WORD);
  }
  /*
  水印图片
  */
function _mark_picture()
{
  /*
  获取水印图片的信息
  */
  @$SIZE=getimagesize($this->FORCE_URL);
  if(!$SIZE)
  {
    exit($this->ERROR['unalviable']);
  }
  $FORCE_PICTURE_;
  $FORCE_PICTURE_HEIGHT=$SIZE[1];
  //创建水印图片
  switch($SIZE[2])
  {
    case 1:
      $FORCE_PICTURE_CREATE=imagecreatefromgif($this->FORCE_URL);
      $FORCE_PICTURE_TYPE="gif";
      break;
    case 2:
      $FORCE_PICTURE_CREATE=imagecreatefromjpeg($this->FORCE_URL);
      $FORCE_PICTURE_TYPE="jpg";
      break;
    case 3:
      $FORCE_PICTURE_CREATE=imagecreatefrompng($this->FORCE_URL);
      $FORCE_PICTURE_TYPE="png";
      break;
  }
/*
  判断水印图片的大小,并生成目标图片的大小,如果水印比图片大,则生成图片大小为水印图片的大小。否则生成的图片大小为原图片大小。
*/
  $this->NEW_PICTURE=$this->PICTURE_CREATE;
  if($FORCE_PICTURE_WIDTH>$this->PICTURE_WIDTH)
  {
    $CREATE_;gt;FORCE_START_X;
  }
  else
  {
    $CREATE_;gt;PICTURE_WIDTH;
  }
  if($FORCE_PICTURE_HEIGHT>$this->PICTURE_HEIGHT)
  {
    $CREATE_HEIGHT=$FORCE_PICTURE_HEIGHT-$this->FORCE_START_Y;
  }
  else
  {
    $CREATE_HEIGHT=$this->PICTURE_HEIGHT;
  }
  /*
  创建一个画布
  */
  $NEW_PICTURE_CREATE=imagecreatetruecolor($CREATE_WIDTH,$CREATE_HEIGHT);
  $WHITE=imagecolorallocate($NEW_PICTURE_CREATE,255,255,255);
  /*
  将背景图拷贝到画布中
  */
  imagecopy($NEW_PICTURE_CREATE, $this->PICTURE_CREATE, 0, 0, 0, 0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  /*
  将目标图片拷贝到背景图片上
  */
  imagecopy($NEW_PICTURE_CREATE, $FORCE_PICTURE_CREATE, $this->FORCE_X, $this->FORCE_Y, $this->FORCE_START_X, $this->FORCE_START_Y,$FORCE_PICTURE_WIDTH,$FORCE_PICTURE_HEIGHT);
  $this->TRUE_COLOR=$NEW_PICTURE_CREATE;
}
//end of mark
function alpha_()
{
  $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  $rgb="#CDCDCD";
  $tran_color="#000000";
  for($j=0;$j<=$this->PICTURE_HEIGHT-1;$j++)
  {
    for ($i=0;$i<=$this->PICTURE_WIDTH-1;$i++)
    {
      $rgb = imagecolorat($this->PICTURE_CREATE,$i,$j);
      $r = ($rgb >> 16) & 0xFF;
      $g = ($rgb >> 8) & 0xFF;
      $b = $rgb & 0xFF;
      $now_color=imagecolorallocate($this->PICTURE_CREATE,$r,$g,$b);
      if ($now_color==$tran_color)
      {
        continue;
      }
      else
      {
        $color=imagecolorallocatealpha($this->PICTURE_CREATE,$r,$g,$b,$ALPHA);
        imagesetpixel($this->PICTURE_CREATE,$ALPHA_X+$i,$ALPHA_Y+$j,$color);
      }
      $this->TRUE_COLOR=$this->PICTURE_CREATE;
    }
  }
}
/*
图片旋转:
沿y轴旋转
*/
function turn_y()
{
  $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  for ($x = 0; $x < $this->PICTURE_WIDTH; $x++)
  {
    imagecopy($this->TRUE_COLOR, $this->PICTURE_CREATE, $this->PICTURE_WIDTH - $x - 1, 0, $x, 0, 1, $this->PICTURE_HEIGHT);
  }
}
/*
沿X轴旋转
*/
function turn_x()
{
  $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  for ($y = 0; $y < $this->PICTURE_HEIGHT; $y++)
  {
    imagecopy($this->TRUE_COLOR, $this->PICTURE_CREATE, 0, $this->PICTURE_HEIGHT - $y - 1, 0, $y, $this->PICTURE_WIDTH, 1);
  }
}
/*
任意角度旋转
*/
function turn()
{
  $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  imageCopyResized($this->TRUE_COLOR,$this->PICTURE_CREATE,0,0,0,0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  $WHITE=imagecolorallocate($this->TRUE_COLOR,255,255,255);
  $this->TRUE_COLOR=imagerotate ($this->TRUE_COLOR, $this->CIRCUMROTATE, $WHITE);
}
/*
图片锐化
*/
function sharp()
{
  $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  $cnt=0;
  for ($x=0; $x<$this->PICTURE_WIDTH; $x++)
  {
    for ($y=0; $y<$this->PICTURE_HEIGHT; $y++)
    {
      $src_clr1 = imagecolorsforindex($this->TRUE_COLOR, imagecolorat($this->PICTURE_CREATE, $x-1, $y-1));
      $src_clr2 = imagecolorsforindex($this->TRUE_COLOR, imagecolorat($this->PICTURE_CREATE, $x, $y));
      $r = intval($src_clr2["red"]+$this->SHARP*($src_clr2["red"]-$src_clr1["red"]));
      $g = intval($src_clr2["green"]+$this->SHARP*($src_clr2["green"]-$src_clr1["green"]));
      $b = intval($src_clr2["blue"]+$this->SHARP*($src_clr2["blue"]-$src_clr1["blue"]));
      $r = min(255, max($r, 0));
      $g = min(255, max($g, 0));
      $b = min(255, max($b, 0));
      if (($DST_CLR=imagecolorexact($this->PICTURE_CREATE, $r, $g, $b))==-1)
        $DST_CLR = imagecolorallocate($this->PICTURE_CREATE, $r, $g, $b);
        $cnt++;
      if ($DST_CLR==-1) die("color allocate faile at $x, $y ($cnt).");
        imagesetpixel($this->TRUE_COLOR, $x, $y, $DST_CLR);
    }
  }
}
/*
  将图片反色处理??
*/
function return_color()
{
  /*
  创建一个画布
  */
  $NEW_PICTURE_CREATE=imagecreate($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  $WHITE=imagecolorallocate($NEW_PICTURE_CREATE,255,255,255);
  /*
  将背景图拷贝到画布中
  */
  imagecopy($NEW_PICTURE_CREATE, $this->PICTURE_CREATE, 0, 0, 0, 0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  $this->TRUE_COLOR=$NEW_PICTURE_CREATE;
}
/*
生成目标图片并显示
*/
function show()
{
  // 判断浏览器,若是IE就不发送头
  if(isset($_SERVER['HTTP_USER_AGENT']))
  {
    $ua = strtoupper($_SERVER['HTTP_USER_AGENT']);
    if(!preg_match('/^.*MSIE.*\)$/i',$ua))
    {
      header("Content-type:$this->PICTURE_MIME");
    }
  }
  $OUT=$this->PICTURE_TYPE;
  $OUT($this->TRUE_COLOR);
}
/*
生成目标图片并保存
*/
function save_picture()
{
  // 以 JPEG 格式将图像输出到浏览器或文件
  $OUT=$this->PICTURE_TYPE;
  if(function_exists($OUT))
  {
    // 判断浏览器,若是IE就不发送头
    if(isset($_SERVER['HTTP_USER_AGENT']))
    {
      $ua = strtoupper($_SERVER['HTTP_USER_AGENT']);
      if(!preg_match('/^.*MSIE.*\)$/i',$ua))
      {
        header("Content-type:$this->PICTURE_MIME");
      }
    }
    if(!$this->TRUE_COLOR)
    {
      exit($this->ERROR['unavilable']);
    }
    else
    {
      $OUT($this->TRUE_COLOR,$this->DEST_URL);
      $OUT($this->TRUE_COLOR);
    }
  }
}
/*
析构函数:释放图片
*/
function __destruct()
{
/*释放图片*/
  imagedestroy($this->TRUE_COLOR);
  imagedestroy($this->PICTURE_CREATE);
}
//end of class
}
?>

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

动易网上商城管理系统 2006 Sp6 Build 1120 普及版
动易网上商城管理系统 2006 Sp6 Build 1120 普及版

将产品展示、购物管理、资金管理等功能相结合,并提供了简易的操作、丰富的功能和完善的权限管理,为用户提供了一个低成本、高效率的网上商城建设方案包含PowerEasy CMS普及版,主要功能模块:文章频道、下载频道、图片频道、留言频道、采集管理、商城模块、商城日常操作模块500个订单限制(超出限制后只能查看和删除,不能进行其他处理) 无订单处理权限分配功能(只有超级管理员才能处理订单)

下载

立即学习PHP免费学习笔记(深入)”;

php自定义数组变量存放全球各个时区信息

PHP生成指定随机字符串的简单实现方法_php技巧

php数组调用与函数执行的方法

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

74

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

83

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

97

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

223

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

458

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

169

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

246

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

34

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 13.4万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号