實際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資料交換的場景。