实际PHP开发工作当中,只需要使用官方提供的函数即可满足,不需要研究算法,不过算法研究是一个很有意义的事情, 每个算法都是一种思想的结晶 , 学习优秀的思想 , 可以开拓思维。
PHPExcel 就是一个用来操作Office Excel 文档的PHP类库。非常好用!值得收藏!如下为相关资源:1.怎么用PHP读取Excel文件信息及内容?(图文 视频教程)2.PHPExcel开发手册下载
<?php namespace Auryn; class CachingReflector implements Reflector { const CACHE_KEY_CLASSES = 'auryn.refls.classes.'; const CACHE_KEY_CTORS = 'auryn.refls.ctors.'; const CACHE_KEY_CTOR_PARAMS = 'auryn.refls.ctor-params.'; const CACHE_KEY_FUNCS = 'auryn.refls.funcs.'; const CACHE_KEY_METHODS = 'auryn.refls.methods.'; private $reflector; private $cache; public function __construct(Reflector $reflector = null, ReflectionCache $cache = null) { $this->reflector = $reflector ?: new StandardReflector; $this->cache = $cache ?: new ReflectionCacheArray; } public function getClass($class) { $cacheKey = self::CACHE_KEY_CLASSES . strtolower($class); if (!$reflectionClass = $this->cache->fetch($cacheKey)) { $reflectionClass = new \ReflectionClass($class); $this->cache->store($cacheKey, $reflectionClass); } return $reflectionClass; }我们的思路是应用程序用到一个Foo类,就会创建Foo类并调用Foo类的方法,假如这个方法内需要一个Bar类,就会创建Bar类并调用Bar类的方法,而这个方法内需要一个Bim类,就会创建Bim类,接着做些其它工作。使用依赖注入的思路是应用程序用到Foo类,Foo类需要Bar类,Bar类需要Bim类,那么先创建Bim类,再创建Bar类并把Bim注入,再创建Foo类,并把Bar类注入,再调用Foo方法,Foo调用Bar方法,接着做些其它工作。这就是控制反转模式。依赖关系的控制反转到调用链的起点。这样你可以完全控制依赖关系,通过调整不同的注入对象,来控制程序的行为。例如Foo类用到了memcache,可以在不修改Foo类代码的情况下,改用redis。使用依赖注入容器后的思路是应用程序需要到Foo类,就从容器内取得Foo类,容器创建Bim类,再创建Bar类并把Bim注入,再创建Foo类,并把Bar注入,应用程序调用Foo方法,Foo调用Bar方法,接着做些其它工作.总之容器负责实例化,注入依赖,处理依赖关系等工作。
<?php namespace ImageOptimizer; use ImageOptimizer\Exception\Exception; use Psr\Log\LoggerInterface; class ChainOptimizer implements Optimizer { private $optimizers; private $executeFirst; private $logger; public function __construct(array $optimizers, $executeFirst, LoggerInterface $logger) { $this->optimizers = $optimizers; $this->executeFirst = (boolean) $executeFirst; $this->logger = $logger; }优化图片:就是去掉不必要的颜色、像素等,例图像的由大变小。网页图像的要求是在尽可能短的传输时间里,发布尽可能高质量的图像。因此在设计和处理网页图像时就要求图像有尽可能高的清晰度与尽可能小的尺寸,从而使图像的下载速度达到最快。为此,必须对图像进行优化。
<?php namespace GifFrameExtractor; class GifFrameExtractor { private $gif; private $frames; private $frameDurations; private $frameImages; private $framePositions; private $frameDimensions; private $frameNumber; private $frameSources; private $fileHeader; private $pointer; private $gifMaxWidth;GIF 图片以 8 位颜色或 256 色存储单个光栅图像数据或多个光栅图像数据。GIF 图片支持透明度、压缩、交错和多图像图片(动画 GIF)。GIF 透明度不是 alpha 通道透明度,不能支持半透明效果。GIF 压缩是 LZW 压缩,压缩比大概为 3:1。GIF 文件规范的 GIF89a 版本中支持动画 GIF。精美的图片是做网站必不可少的元素,尤其是GIF动画,可以让原本呆板的网站变得栩栩如生。大家见得最多的可能就是那些不断旋转的“Welcome”,以及风格各异的广告Banner。在Windows平台上,制作GIF动画有许多工具,其中著名的有Adobe公司的ImageReady、友立公司的GIF Animation等。在Linux平台上,我们同样可以轻松地制作动感十足的GIF动画。Linux中的GIMP就是一个具有同GIF Animation或者ImageReady一样简单易用,并且功能强大的GIF动画制作工具。它不仅完全可以胜任GIF动画制作,而且可以充分利用GIMP强大的图像处理功能,使GIF动画更具感染力和吸引力。
<?php namespace Streamer; class FileStream extends Stream { public static function create($filename, $mode, $use_include_path = false, $context = null) { $type = gettype($context); if($type == 'resource') { return new self(fopen($filename, $mode, $use_include_path, $context)); } return new static(fopen($filename, $mode, $use_include_path)); } }面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
<?php class download { var $url;//远程文件地址 var $file_name = "hdwiki.zip";//下载来的文件名称 var $save_path = "./www.phpfensi.com";//下载到本地的文件路径 var $localfile;//下载到本地文件的路径和名称 var $warning;//警告信息 var $redown=0;//是否重新下载 /*初始化*/ function seturl($url) { if(!empty($url))$this->url = $url; } function setfilename($file_name) { if(!empty($file_name))$this->file_name = $file_name; } function setsavepath($save_path) { if(!empty($save_path))$this->save_path = $save_path; } function setredown($redown) { if(!empty($redown))$this->redown = $redown; }随着计算机、通信和信息技术的迅速发展和广泛应用,人类正在进入信息化社会世界各地的人们通过建立网络,相互间可以自由而廉价地利 用别人的资源,实现相互间不同地域、不同时间的资源共享,也就是信息共享,信息交流极其便捷,因而网络获得了空前的大发展,远程文件传输也得到了普遍使用。
<?php class union { var $lista = array(); var $listb = array(); var $listc = array(); function getlenght($arr) { //获得表长度 return count($arr); } function getelement($arr, $n) { //获取表中第n个元素,返回 return $e = $arr[$n] ? $arr[$n] : ''; } function listinsert($arr, $e) { //表末尾插入元素 $arr[] = $e; return $arr; }表格,又称为表,即是一种可视化交流模式,又是一种组织整理数据的手段。人们在通讯交流、科学研究以及数据分析活动当中广泛采用着形形色色的表格。各种表格常常会出现在印刷介质、手写记录、计算机软件、建筑装饰、交通标志等许许多多地方。随着上下文的不同,用来确切描述表格的惯例和术语也会有所变化。此外,在种类、结构、灵活性、标注法、表达方法以及使用方面,不同的表格之间也炯然各异。在各种书籍和技术文章当中,表格通常放在带有编号和标题的浮动区域内,以此区别于文章的正文部分。
<?php class CreateHtml { function mkdir( $prefix= 'article' ) { $y = date('Y'); $m = date('m'); $d = date('d'); $p=DIRECTORY_SEPARATOR; $filePath='article'.$p.$y.$p.$m.$p.$d; $a=explode($p,$filePath); foreach ( $a as $dir) { $path.=$dir.$p; if(!is_dir($path)) { //echo '没有这个目录'.$path; mkdir($path,0755); } } return $filePath.$p; }静态文档是指内容固定的文档,它是由万维网服务器创建,并存放在其中。当客户利用 浏览器访问万维网服务器里的该文档时,这个文档的副本被传送到客户,客户就可使用浏览程序显示这个文档。当然,服务器中的文档内容是可以修改的,但客户却不能修改它。静态文档的最大优点是简单,文档可以由非程序设计人员来创建。它的缺点是不够灵活。因此,对于内容变化频繁的文档是不适合做成静态文档的。
<?php // file:calendar.class.php 日历类原文件 error_reporting(0); class Calendar{ private $year; private $month; private $start_weekday; //当月的第一天对应的是周几,作为当月开始遍历日期的开始 private $days; //当前月总天数 //构造方法,用来初使化一些日期属性 function __construct(){ //如果用户没有设置所份数,则使用当前系统时间的年份 $this->year = isset($_GET["year"]) ? $_GET["year"] : date("Y"); //如果用户没有设置月份数,则使用当前系统时间的月份 $this->month = isset($_GET["month"]) ? $_GET["month"] : date("m"); //通过具体的年份和月份,利用date()函数的w参数获取当月第一天对应的是周几 $this->start_weekday = date("w",mktime(0,0,0,$this->month,1,$this->year)); //通过具体的年份和月份,利用date()函数的t参数获取当月的天数 $this->days = date("t",mktime(0,0,0,$this->month,1,$this->year)); }日历是一种日常使用的出版物,用于记载日期等相关信息。每页显示一日信息的叫日历,每页显示一个月信息的叫月历,每页显示全年信息的叫年历。有多种形式,如挂历、座台历、年历卡等,如今又有电子日历。中国始有历法大约在四千多年以前。根据甲骨文中的一页甲骨历,证明殷代的历法已具有相当的水平,这一页甲骨历是全人类最古老的历书实物,这页甲骨历也就叫日历。
<?php namespace Hashids; class Hashids implements HashidsInterface { const SEP_DIV = 3.5; const GUARD_DIV = 12; protected $alphabet; protected $seps = 'cfhistuCFHISTU'; protected $guards; protected $minHashLength; protected $salt; public function __construct($salt = '', $minHashLength = 0, $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890') { $this->salt = $salt; $this->minHashLength = $minHashLength; $this->alphabet = implode('', array_unique(str_split($alphabet))); if (strlen($this->alphabet) < 16) { throw new HashidsException('Alphabet must contain at least 16 unique characters.'); } if (strpos($this->alphabet, ' ') !== false) { throw new HashidsException('Alphabet can\'t contain spaces.'); }这是一个功能强大的php加密类,构造参数是密匙,对数字进行一些加密和解密的操作。
<?php namespace DMS\Filter; use DMS\Filter\Filters\Loader\FilterLoaderInterface; class Filter implements FilterInterface { protected $metadataFactory; protected $filterLoader; public function __construct(Mapping\ClassMetadataFactory $metadataFactory, $filterLoader) { $this->metadataFactory = $metadataFactory; $this->filterLoader = $filterLoader; } public function filterEntity($object) { $this->walkObject($object); } public function filterProperty($object, $property) { $this->walkObject($object, $property); }在项目开发过程中,有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理。最常见的应用在用户登录以及一些API数据交换的场景。