目录
5. [代码][PHP]代码  
4. [代码][PHP]代码    
首页 后端开发 php教程 php读写excel类,支持多工作簿和自定义样式

php读写excel类,支持多工作簿和自定义样式

Aug 08, 2016 am 09:33 AM
php

1. [代码][PHP]代码 

<?php
/**
 * @desc excel接口
 * @author mengdejun
 */
interface  IExcel
{
		//导入excel
		public function import($fileName,$convert_callback_function=null);
		//导出excel
 		public function export($fileName="excel");
 		//添加行
 		public function addRow(array $array,$sheet="sheet1");
 		//添加表头
 		public function addHead(array $array,$sheet="sheet1");
 		//添加工作簿
 		public function  addSheet($sheet);
 		//释放资源
 		public function release();
}
?>
登录后复制

2. [代码][PHP]代码

<?php
include_once (&#39;IExcel.php&#39;);
/**
 * @desc php生成excel类函数
 * @author mengdejun
 * @date 20100806
 * @version 1.1.2
 */
class HtmlExcel implements IExcel
{
	private $_line=array();
	private $isHeader=false;
	private $convert=false;
	public function __construct(){}

	/**
	 * @desc 添加表头信息,注:表头仅可添加一次,若无表头则将内容行的第一行作为表头
	 * @param array $array
	 * @param unknown_type $sheet
	 */
	public function addHead(array $array, $sheet = "sheet1")
	{
		if(!$this->isHeader)
			$this->_line[]=$this->getLine($array);
		$this->isHeader=true;
	}

	/**
	 * @desc 添加自定义字符转换或过滤函数
	 * @param unknown_type $functionName 回调函数名
	 */
	public function addConvert($functionName="convert")
	{
		$this->convert=$functionName;
	}

	protected function getLine(array $array,$sheet=&#39;sheet1&#39;)
	{
		$_temp="";
		$_count=sizeof($array);
		$index=0;
			foreach($array as $value):
				$_temp.=$this->convert($value);
					if($index==$_count-1):
						$_temp.="\t\n";
					else:
						$_temp.="\t";
					endif;
				$index++;
			endforeach;
		return $_temp;
	}

	/**
	 * @desc 添加excel行,若没有设置表头则将该数组的第一个元素作为表头
	 * @param array $array
	 * @param unknown_type $sheet
	 */
	public function addRow(array $array, $sheet = "sheet1")
	{
		$this->_line[]=$this->getLine($array,$sheet);
		return $this->_line;
	}

	/**
	 * @desc 嵌套添加excel行,若没有设置表头则将该数组的第一个元素作为表头
	 * @param array $array
	 * @param unknown_type $sheet
	 */
	public function addRows(array $array,$sheet = "sheet1")
	{
		foreach($array as $value):
			if(is_array($value)):
				$this->addRow($value);
			else:
				$this->addRow($array);
			endif;
		endforeach;
	}

	/**
	 * @desc 添加工作簿,暂不支持V1.0
	 * @deprecated
	 * @param array $array
	 */
	public function addSheet($sheet) {return;}

	/**
	 * @desc 返回excel表行数
	 */
	public function getRows()
	{
		return sizeof($this->_line);
	}

	/**
	 * @desc 返回excel内容
	 */
	public function getBody()
	{
		return $this->_line;
	}

	/**
	 * @desc 导出excel文件
	 * @param unknown_type $fileName 导出文件名
	 */
	public function export($fileName = "excel")
	{
		header("Content-Type: application/vnd.ms-excel;");
		header("Content-Disposition:filename={$fileName}.xls");
		for($index=0;$index<sizeof($this->_line);$index++):
			echo $this->_line[$index];
		endfor;
	}

	/**
	 * @desc 用户自定义编码转化以及数据筛选函数
	 * @param unknown_type $str
	 */
	protected function convert($str)
	{
		if(function_exists($this->convert)):
			return call_user_func($this->convert,$str);
		else:
			return $str;
		endif;
	}

	/**
	 * @desc 设置表格内容
	 * @param unknown_type $array
	 */
	public function setBody($array)
	{
		$this->_line=$array;
	}
	/**
	 * @desc 释放资源
	 */
	public function release()
	{
		unset($this->_line);
	}
	public function import($fileName,$convert_callback_function=null){}
}
?>
登录后复制

3. [代码][PHP]代码

<?php
include_once (&#39;IExcel.php&#39;);
/**
 * @desc php生成excel类函数 支持导入 导出 多工作薄(数据分卷技术)
 * @filesource XmlExcel.php
 * @author mengdejun
 * @date 20100801
 * @version 1.8.1
 */
if(!defined("CHARSET")):define("CHARSET","UTF-8");endif;
if(!defined("VERSION")):define("VERSION","12.00");endif;
if(!defined("THIS_VERSION")):define("THIS_VERSION","1.8.1");endif;
if(!defined("NULL")):define("NULL",null);endif;
class XmlExcel implements IExcel
{
	private $header = "<?xml version=\"1.0\" encoding=\"%s\"?>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:html=\"http://www.w3.org/TR/REC-html40\">";
	private $documentInfo="<DocumentProperties xmlns=\"urn:schemas-microsoft-com:office:office\"><Author>{author}</Author><Created>{time}</Created><Company>{company}</Company><Version>{version}</Version></DocumentProperties>";
    private $footer = "</Workbook>";
    private $align_left="<Style ss:ID=\"s62\"><Alignment ss:Horizontal=\"Left\" ss:Vertical=\"Center\"/></Style>";
    private $align_center="<Style ss:ID=\"s63\"><Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Center\"/></Style>";
    private $align_right="<Style ss:ID=\"s64\"><Alignment ss:Horizontal=\"Right\" ss:Vertical=\"Center\"/></Style>";
    private $align_bold="<Style ss:ID=\"s65\"><Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Center\"/><Font ss:FontName=\"宋体\" x:CharSet=\"134\" ss:Size=\"12\" ss:Color=\"#000000\" ss:Bold=\"1\"/></Style>";
    private $align_default="<Style ss:ID=\"Default\" ss:Name=\"Normal\"><Alignment ss:Horizontal=\"%s\" ss:Vertical=\"Center\"/><Borders/><Font ss:FontName=\"宋体\" x:CharSet=\"134\" ss:Size=\"11\" ss:Color=\"#000000\"/><Interior/><NumberFormat/><Protection/></Style>";
    private $charset=CHARSET;
    private $convert="convert";
    private static $pre_workBook=NULL;
    private $_line=NULL;
    private $_column=NULL;
    private $_columnType=NULL;
    private $_styles=NULL;
    private $_style=NULL;
    private $_title=NULL;
    private $_align="Left";
    private $defaultHeight=13.5;
    private $defaultWidth=54;
    private $_sheets=NULL;
	private $_heads=NULL;
	/**
	 * @desc 构造方法 PHP5.X
	 * @param string $charset 字符编码
	 */
    public function __construct($charset = &#39;UTF-8&#39;)
    {
    	$this->charset=$charset;
    }
    /**
	 * @desc 构造方法 PHP4.X
	 * @param string $charset 字符编码
	 */
    public function XmlExcel($charset = &#39;UTF-8&#39;)
    {
    	$this->charset=$charset;
    }
    /**
     * @desc 析构方法
     */
	public function __destruct(){}
	/**
	 * @desc 释放可用资源
	 * @return null
	 */
	public function release()
	{
		unset($this->_line,$this->_column,$this->_heads,$this->_sheets,$this->_styles,$this->_style,$this->_title,self::$pre_workBook);
	}
    /**
     * @desc 数组行转换函数
     * @param array $array
     */
	protected function getLine(array $array)
	{
		$_temp="<Row ss:AutoFitHeight=\"0\">";
			foreach($array as $key=>$val):
				#读取指定数据类型,默认String
				$_type=!empty($this->_columnType)&&isset($this->_columnType)?!empty($this->_columnType[$key])&&isset($this->_columnType)?$this->_columnType[$key]:"String":"String";
				$_temp.="<Cell><Data ss:Type=\"{$_type}\">{$this->convert($val)}</Data></Cell>";
			endforeach;
		$_temp.="</Row>";
		return $_temp;
	}
	/**
	 * @desc 添加表格头,默认的第一个数组将作为表头
	 * @param array $array
	 * @param string $sheet 工作表名
	 * @exception $array 不能为空
	 */
	public function addHead(array $array, $sheet = "sheet1")
	{
		$this->_line[$sheet][0]=$this->getLine($array);
		$this->_title[$sheet][&#39;width&#39;]=count($array)-1;
		$this->_sheets[]=$sheet;
		$this->_heads[$sheet][0]=$array;
	}
	/**
	 * @desc 添加行
	 * @param array $array
	 * @param string $sheet
	 */
	public function addRow(array $array, $sheet = "sheet1",$isErrorReport=true)
	{
		if($isErrorReport):
			if(empty($array)||!isset($array)||count($array)==0):
				exit("data can&#39;t null&#39;");
			else:
				$this->_line[$sheet][]=$this->getLine($array);
			endif;
		else:
			$this->_line[$sheet][]=$this->getLine($array);
		endif;
	}
	/**
	 * @desc 设置工作簿的表头对象
	 * @param $head 表头数据
	 * @param $sheet 工作簿名称 
	 */
	public function setSheetHead(array $head,$sheet="Sheet1")
	{
		$this->_line[$sheet][]=$this->getLine($head);
	}
	/**
	 * @desc 添加多行 支持嵌套数组
	 * @param array $array
	 * @param unknown_type $sheet
	 */
	public function addRows(array $array,$sheet = "Sheet1")
	{
		foreach($array as $value):
			if(is_array($value)):
				$this->addRow($value,$sheet);
			else:
				$this->addRow($array,$sheet);
			endif;
		endforeach;
	}
	/**
	 * @desc 获取制定工作薄的列宽度
	 * @param @sheet 工作薄名称
	 */
	public function getColumnLength($sheet="Sheet1")
	{
		return $this->_title[$sheet][&#39;width&#39;];
	}
	/**
	 * @desc 添加工作薄
	 * @param unknown_type unknown_type $sheet
	 */
	public function addSheet($sheet,$array=array())
	{
		$this->_line[$sheet][]=$array;
	}
	/**
	 * @desc 工作薄添加标题
	 * @param string $str 标题
	 * @param string $sheet 工作薄名
	 */
	public function addTitle($str,$sheet="Sheet1")
	{
		$str=$this->convert($str);
		$this->_title[$sheet][&#39;title&#39;]="<Row ss:AutoFitHeight=\"0\" ss:StyleID=\"s65\"><Cell ss:MergeAcross=\"{num}\"><Data ss:Type=\"String\">{$str}</Data></Cell></Row>";
	}
	/**
	 * @desc excel导出
	 * @param string $fileName 导出的文件名
	 */
	public function export($fileName = "excel",$isConvert=false)
	{
		if($isConvert):
			$fileName=$this->getConvertString($fileName);
		endif;
		header("Content-Type: application/vnd.ms-excel; charset=" . $this->charset);
        header("Content-Disposition:attachment; filename=\"{$fileName}.xls\"");
        echo stripslashes(sprintf($this->header, $this->charset));
        echo str_replace("{company}","xiao meng online",str_replace("{time}",date("Y-m-dH:i:s",time()),str_replace("{author}","mengdejun",str_replace("{version}",VERSION,$this->documentInfo))));
        echo "<Styles>";
        echo stripslashes(sprintf($this->align_default, $this->_align));
	    echo $this->align_left;
	    echo $this->align_right;
	    echo $this->align_center;
	    echo $this->align_bold;
        echo "</Styles>";
        $_hasData=count($this->_line)==0?false:true;
        if($_hasData):
        	#有数据,解析数组对象到excel表格
        	foreach($this->_line as $key=>$value):
        	echo "<Worksheet ss:Name=\"{$this->convert($key)}\"><Table ss:DefaultColumnWidth=\"{$this->defaultWidth}\" ss:DefaultRowHeight=\"{$this->defaultHeight}\">";
        		#列样式和宽度
        		if(isset($this->_column[$key][&#39;style_width&#39;])):
        			foreach($this->_column[$key][&#39;style_width&#39;] as $s_key=>$s_value):
        				echo "<Column ss:Index=\"{$s_key}\" ss:AutoFitWidth=\"1\" ss:Width=\"$s_value\"/>";
        			endforeach;
        		endif;
        		#表格标题
        		if(!empty($this->_title[$key][&#39;title&#39;])):
        			echo str_replace("{num}",$this->_title[$key][&#39;width&#39;],$this->_title[$key][&#39;title&#39;]);
        		endif;
        		#单元格
        		foreach($value as $_v):
        			echo $_v;
        		endforeach;
        	echo "</Table></Worksheet>";
        	endforeach;
        	#加载标准工作薄(默认三个工作簿)
        	$length=count($this->_line);
        	while($length<3):
        		$length++;
        		echo "<Worksheet ss:Name=\"Sheet{$length}\"><Table></Table></Worksheet>";
        	endwhile;
        else:
        	 #无数据,添加默认工作簿和数据支持(错误处理:文件读取失败)
        	 for($index=1;$index<=3;$index++):
        	 	echo "<Worksheet ss:Name=\"Sheet{$index}\"><Table></Table></Worksheet>";
        	 endfor;
        endif;
        echo $this->footer;
	}
	/**
	 * @desc excel导入函数,注该函数的文件名必须是非中文
	 * @param unknown_type $fileName 导入的文件
	 * @param unknown_type $convert_callback_function 回调函数 支持编码转换,需返回转换后的字符串
	 * @return 三维数组,分别对应 工作薄/行/单元格
	 */
	public function import($fileName,$convert_callback_function=null)
	{
		$xls=simplexml_load_file($fileName);
		$is_convert=!empty($convert_callback_function)&&function_exists($convert_callback_function);
		$index=0;
		$_ra=array();
		foreach($xls->Worksheet as $worksheet):#循环工作薄
			$index_i=1;
			foreach($worksheet->Table->Row as $cells):#循环行
				if($index_i!==1):
					foreach($cells as $cell):#循环单元格
						$_ra[$index][$index_i][]=$is_convert?call_user_func($convert_callback_function,$cell->Data):$cell->Data;
					endforeach;
				endif;
				$index_i++;
			endforeach;
			$index++;
		endforeach;
		return $_ra;
	}
	/**
	 * @desc 设置字符编码
	 * @param string $charset 设置导出文件的编码
	 */
	public function setCharset($charset="GBK")
	{
		$this->charset = $charset;
	}

	/**
	 * 设置工作薄的列的宽度 array(1=>10,2=>23,3=>23,4=>213,5=>asd) 重复设置该值 将覆盖前一次操作的结果
	 * @param string $sheet 工作薄名
	 * @param array $array 列数组
	 */
	public function setColumnWidth($sheet="sheet1",$array)
	{
		if(!empty($this->_column[$sheet][&#39;style_width&#39;])&&isset($this->_column[$sheet][&#39;style_width&#39;])):
			unset($this->_column[$sheet][&#39;style_width&#39;]);
		endif;
		$this->_column[$sheet][&#39;style_width&#39;]=$array;
	}
	/**
	 * @desc 设置所有工作薄的列宽度
	 * @param array $array 列宽度
	 */
	public function setAllColumnWidth(array $array)
	{
		$_temp=$this->getAllSheetNames();
		foreach($_temp as $value):
			$this->setColumnWidth($value,$array);
		endforeach;
	}
	/**
	 * @desc 设置默认行高
	 * @param integer $height
	 */
	public function setDefaultRowHeight($height="54")
	{
		$this->defaultHeight=$height;
	}
	/**
	 * 设置字符编码转换函数(回调函数)
	 * @param string $convert 设置转换函数 默认名称为convert
	 */
	public function addConvert($convert="convert")
	{
		$this->convert = $convert;
	}
	/**
	 * @desc 内部回调函数,完成字符编码的转化
	 * @param unknown_type $str
	 */
	protected function convert($str)
	{
		if(function_exists($this->convert)):
			return call_user_func($this->convert,$str);
		else:
			return $str;
		endif;
	}
	/**
	 * 获取工作薄个数
	 * @param int $sheet 获取工作薄的个数
	 * @return integer
	 */
	public function getSheets()
	{
		return sizeof($this->_line);
	}
	/**
	 * 获取工作薄表格行数
	 * @param String $sheet 工作薄名
	 * @return integer
	 */
	public function getRows($sheet)
	{
		return sizeof($this->_line[$sheet]);
	}
	/**
	 * @desc 获取指定工作薄的表头信息
	 * @param string $sheet 工作薄名称
	 */
	public function getHead($sheet)
	{
		return $this->_heads[$sheet][0];
	}
	/**
	 * @desc 设置默认行高度
	 * @param integer $defaultHeight 行的默认高度 无默认值
	 */
	public function setDefaultHeight($defaultHeight) {
		$this->defaultHeight = $defaultHeight;
	}
	/**
	 * @desc 设置默认的列宽度
	 * @param integer $defaultWidth 列的默认宽度 无默认值
	 */
	public function setDefaultWidth($defaultWidth) {
		$this->defaultWidth = $defaultWidth;
	}
	/**
	 * @desc 当前工作薄可用行数
	 */
	public function currentSheetsLength()
	{
		return sizeof($this->_line)+1;
	}
	/**
	 * @desc 设置默认的居中方式
	 * @param string $_align 可选值 Left(left),Center(center),Right(right)
	 */
	public function setDefaultAlign($_align)
	{
		$this->_align = ucfirst($_align);
	}
	/**
	 * @desc 自动创建工作薄,支持自动分卷技术,该方法与addHead冲突,使用该方法时请勿调用addHead,否则将添加一个空白的工作薄
	 * @param array $head 表头
	 * @param array $data 数据
	 * @param int $pageSize 页面行数 默认60000,excel最大支持65536
	 * @param string $defaultName 工作薄名,工作簿不能重名
	 */
	public function addPageRow(array $head,array $data,$pageSize=60000,$defaultName="Sheet")
	{
		if(!isset($defaultName)||$defaultName=="Sheet")$defaultName="Sheet".($this->getSheets()+1);
		if(empty(self::$pre_workBook)):
			self::$pre_workBook=$defaultName;
			if(!isset($this->_heads[self::$pre_workBook][0]))
			$this->addHead($head,self::$pre_workBook);
			$this->addRow($data,self::$pre_workBook);
		else:
			if($this->getRows(self::$pre_workBook)>=($pageSize+1)):
				$this->addHead($head,$defaultName);
				$this->addRow($data,$defaultName);
				self::$pre_workBook=$defaultName;
			else:
				$this->addRow($data,self::$pre_workBook);
			endif;
		endif;
	}
	/**
	 * @desc 返回所有工作薄名
	 * @param null
	 */
	public function getAllSheetNames()
	{
		return $this->_sheets;
	}
	/**
	 * @desc 设置所有表格标题(分卷) 默认为合并当前工作薄的所有列,并居中显示(粗体) 该方法必须在工作簿存在的情况下调用.
	 * @param string $title 标题
	 */
	public function setAllTitle($title)
	{
		$_temp=$this->getAllSheetNames();
		foreach($_temp as $value):
			$this->addTitle($title,$value);
		endforeach;
	}
	/**
	 * @desc 编码转换函数
	 * @param string $str 转换的字符串
	 * @param string $source_code 原编码 默认UTF-8
	 * @param string $target_code 目标编码 默认GBK
	 */
	protected function getConvertString($str,$source_code=&#39;UTF-8&#39;,$target_code=&#39;GBK&#39;)
	{
		return !empty($str)&&is_string($str)?iconv($source_code,$target_code,$str):$str;
	}
	/**
	 * @desc 打印调试信息
	 * @param null
	 */
	public function debug($out=true)
	{
		if($out):
			var_dump($this->_line);
		else:
			return $this->_line;
		endif;
	}
	/**
	 * @desc 工作薄命名后缀 调用此方法将生成全局唯一工作薄名
	 * @param $name 自定义工作薄名
	 */
	public function uniqueName($name)
	{
		$size=$this->getSheets();
		if($size==0)return $name;
		else return $name.$size;
	}
	/**设置单位格数据类型,该方法需在填充数据前完成 数据类型参照指定版本的excel
	 * @param $_columnType the $_columnType to set array 指定的键值对数组
	 */
	public function set_columnType($_columnType)
	{
		$this->_columnType = $_columnType;
	}
}
?>
登录后复制


4. [代码][PHP]代码

<?php
	include&#39;lib/XmlExcel.php&#39;;
	$xls=new XmlExcel;
	$xls->setDefaultWidth(80);
	$xls->setDefaultAlign("center");
	$xls->setDefaultHeight(18);
	$xls->addHead(array("title1","title2","title3","title4","title5","title6"),"demo1");
	for($ind=0;$ind<10;$ind++):
		$xls->addRow(array($ind,$ind,$ind,$ind,$ind,$ind),"demo1");
	endfor;
	$xls->export("demo1");
?>
登录后复制

5. [代码][PHP]代码

<?php
	include&#39;lib/XmlExcel.php&#39;;
	$xls=new XmlExcel;
	$xls->setDefaultWidth(80);
	$xls->setDefaultAlign("center");
	$xls->setDefaultHeight(18);
	for($ind=0;$ind<50;$ind++):
		$xls->addPageRow(array("title1","title2","title3","title4","title5","title6"),array($ind,$ind,$ind,$ind,$ind,$ind),10,$xls->uniqueName("demo"));
	endfor;
	$xls->export("demo2");
?>
登录后复制

     

6. [图片] e1.jpg    php读写excel类,支持多工作簿和自定义样式

   

7. [图片] e2.jpg    

php读写excel类,支持多工作簿和自定义样式

                                           

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 使用数据库 CakePHP 使用数据库 Sep 10, 2024 pm 05:25 PM

在 CakePHP 中使用数据库非常容易。本章我们将了解CRUD(创建、读取、更新、删除)操作。

CakePHP 日期和时间 CakePHP 日期和时间 Sep 10, 2024 pm 05:27 PM

为了在 cakephp4 中处理日期和时间,我们将使用可用的 FrozenTime 类。

CakePHP 文件上传 CakePHP 文件上传 Sep 10, 2024 pm 05:27 PM

为了进行文件上传,我们将使用表单助手。这是文件上传的示例。

讨论 CakePHP 讨论 CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

CakePHP 创建验证器 CakePHP 创建验证器 Sep 10, 2024 pm 05:26 PM

可以通过在控制器中添加以下两行来创建验证器。

CakePHP 日志记录 CakePHP 日志记录 Sep 10, 2024 pm 05:26 PM

登录 CakePHP 是一项非常简单的任务。您只需使用一项功能即可。您可以记录任何后台进程(如 cronjob)的错误、异常、用户活动、用户采取的操作。在 CakePHP 中记录数据很容易。提供了 log() 函数

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

See all articles