spl,指SPL - Standard PHP Library 標準PHP類庫。
成都創新互聯是一家專業提供溫宿企業網站建設,專注與成都網站制作、做網站、H5高端網站建設、小程序制作等業務。10年已為溫宿眾多企業、政府機構等服務。創新互聯專業網站建設公司優惠進行中。
不管是二次開發,還是自己全部重新設計,我們都得要有一個大前提,那就是最大化提高系統平臺生命周期,國內很多phper開發者,很多項目的生命周期短得可憐,閱其代碼堅酸難懂。接手的開發人員像被強奸的感覺,,合格的PHP程序員應把代碼看成是一種藝術。
一個操作平臺是否擁有良好的可擴展性,布局,可維護性是其根本的基礎。其核心框架必需高度抽象化,有良好的命名空間與對象接口,,這樣才能算是進入貴族藝術編程世界。
SPL(Standard PHP Library) IN PHP5
下一步中大型PHP商業應用的主流的開發將會是以OO,OA軟件開發模式主領潮流,從PHP5到PHP6,google Trends足以證明這一點,過去傳統的面向過程的開發模式將會被棄之,如果你是一位真正合格程序員。
你會發現OO所帶來的好處是深遠的,不僅是軟件工程所帶來的收益,而且此種思維理念對個人思維方式定有大的變革,你會發現你做事情開始方式無處不在。
當然筆者不想去論述用面向過程寫PHP代碼所帶來的好處(如簡單的應用),那種單人時代的開發方式如兒童時代已不適合需求復雜,變化過快的現代商業環境.筆者發現,如今支持面向過程的開發者大多知識不夠全,夠不夠廣,還不足以用OO來解決商業開發,當然這不是絕對。
但一位有著C++,JAVA, Smalltalk、EIFFEL等開發語言背景的程序員,他會無一不支持OO開發模式,相反網絡知識框架基礎較少,各種協議一知半解,只會PHP的開發人員他們會覺得面向過程最適合他們。
以上內容參考?百度百科-spl (標準PHP類庫)
? ?PHP庫給開發者提供了一個標準接口 它幫助開發者在PHP里充分利用面向對象編程 這些庫為特定類型的內置功能提供了一個標準的API 允許類可以與PHP引擎進行無縫的交互 此外 開發者使用這些類庫還可以簡化工作流程 提供工作效率
下面就一起來看看這些非常實用且免費的類庫吧 希望它們能助你一臂之力
Requests
? ?Requests是一個用PHP編寫的HTTP庫 遵循ISC開源協議 托管在GitHub上 Requests取代了Python HTTP/ 以外的一切工作———讓你與Web服務可以無縫的結合
? ?Requests提供了一致的API 并且使用cURL或fsockopen(具體取決于可用性) 它還簡化了發送請求 接受HEAD GET POST PUT DELETE或PATCH并且添加標頭 表單數據和多個部分組成的文件 其次 該庫還適用于國際域名 身份驗證 自動壓縮gzip壓縮響應等 綜上所述可以看出 Requests是一個非常好用且可以友好托管HTTP請求的標簽
Munee
? ? Munee是一個集圖片尺寸調整 CSS JS合并/壓縮 緩存等功能于一身的PHP庫 可以在服務器端和客戶端緩存資源 它集成了PHP圖片操作庫Imagine來實現圖片尺寸調整和剪切 之后進行緩存
? ? Munee可以自動編譯LESS SCSS和CoffeeScript 并且可以把CSS+JS文件合并成一個單一的請求 此外 還可以對這些CSS JS文件進行精縮 讓其擁有更好的性能表現 該庫還可以輕易地與任何代碼集成
Ratchet?
? ?Ratchet是一個PHP庫 WebSockets工具包 開發者可以使用它在客戶端和服務器端之間構建實時 雙向的App應用 并且可以快速簡單地構建事件驅動應用程序(而不是傳統的HTTP 請求/響應應用程序)
Swift Mailer
? ?Swift Mailer是一個功能豐富的PHP郵件庫 不依賴于PHP自帶的mail() 函數 因為該函數在發送多個郵件時占用的系統資源很高 Swift直接與SMTP服務器通訊 具有非常高的發送速度和效率
Unirest?
? ?Unirest是一個輕量級的HTTP開發庫 可用于PHP Ruby Python Java Objective C等開發語言 支持GET POST PUT UPDATE DELETE操作 它的調用方法與返回結果對所有開發語言來說 都是相同的
Detector
? ?Detector是一個開源的PHP類庫 用于檢測用戶的瀏覽器環境 它可以獲得瀏覽器的使用情況和瀏覽器的HTML CSS 功能 并分析是否是移動 平板電腦 桌面或網頁爬蟲和其他項 如 顏色深度 視頻尺寸 Cookie等 該庫對每個瀏覽器用戶都使用單一的用戶代理字符串來自動適應新瀏覽器 版本和設備
PHP Thumb
? ?PHP Thumb是一個PHP類 用來生成圖片的縮略圖 只需數行代碼即可 支持多種圖片來源 包括文件系統或者數據庫 支持大多數圖片格式 并可對圖片進行旋轉 剪切 加水印等等 可自定義縮略圖的質量 提供內建的緩存以降低服務器的負載
Zebra Image
? ? ?Zebra Image是一個開源的輕量級圖像處理庫 并且是一款面向對象庫 只需PHP GD 擴展 并支持縮放 裁剪 旋轉和翻轉操作 它可以用于 jpg gif png等格式
Hybrid Auth
? ?HybridAuth是一個開源PHP類庫 用于通過微博/社交網站和ID來提供驗證功能實現同步登錄網站功能 它能夠很方便的與現有網站相集成 只要引用一個文件并添加幾行代碼就能夠實現登錄 一旦驗證 HybridAuth會提供連接用戶的標準化相關資料 此外 除了驗證功能 這個類庫能夠讓我們與用戶連接的social API客戶端相交互
Gantt Charts
? ?Gantti是一個開源的PHP類 幫助用戶即時生成Gantt圖表 使用Gantti創建圖表無需使用JavaScript 是純HTML CSS 圖表默認輸出非常漂亮 但用戶可以自定義樣式進行輸出(SASS樣式表)
Mobile Detect?
? ?Mobile Detect是一個PHP類 通過User Agent檢測各種手機設備 并結合HTTP Header來檢測移動設備環境 該類庫最強大的地方是 它有一個非常完整的庫 可以檢測出所用的設備類型(包括操作類型 以及手機品牌等都能檢測)和瀏覽器的詳細信息
ImageWorkshop
? ?顧名思義 ImageWorkshop是一個管理和操作圖片的PHP類庫 這個類擁有類似圖片編輯軟件的邏輯 基于層的概念 可以疊加很多層或層組(每一層不同的操縱選項) 它還支持許多功能 比如水印 裁剪 移動 縮放 旋轉 疊加等
JqmPhp
? ?JqmPhp是一個PHP開源類庫 旨在簡化jQuery與PHP來進行移動開發 用于生成使用jQuery Mobile框架所需要的HTML文件 該類庫的文件是獨立的 所以你可以根據需要來選擇使用
PHP Image Cache
? ?Image Cache是一個輕量級的PHP類 可以在用戶瀏覽器里壓縮 移動 緩存圖片 這個類提供一些簡單的設置如 目錄 根路徑URL等 然后針對每一張圖片調用壓縮功能
Imagine
? ?Imagine是一個面向對象的PHP類庫 用于圖片操作 這個類庫能夠處理一些經常用到的操作如 縮放 裁剪 應用過濾等 其Color類庫可用于對任意特定的顏色生成RGB值 并且還提供一些方法來繪制圖形如 圓弧 橢圓 線 片等
lishixinzhi/Article/program/PHP/201404/30630
jpgraph的安裝與配置
Jpgraph這個強大的繪圖組件能根據用戶的需要繪制任意圖形。只需要提供數據,就能自動調用繪圖函數的過程,把處理的數據輸入自動繪制。Jpgraph提供了多種創建各種統計圖,包括折線圖、柱形圖和餅形圖等。Jpgraph是一個完全使用php語言編寫的類庫,并可以應用任何php環境中。
1、jpgraph的安裝
Jpgraph可以從其官方網站下載。注意:jpgraph支持php4.3.1以上和PHP5兩種版本的圖形庫,選擇合適的jpgraph下載。可以下載這樣的版本使用:jpgraph-2.3
其安裝步驟非常簡單:
a)? ?? ???將壓縮包下的全部文件解壓到一個文件夾中。如f:\appserv\www\jpgraph
b)? ?? ? 打開PHP的安裝目錄,編輯php.ini文件并修改其中的include_path參數,在其后增加前面的文件夾名,include_path=”.;f:\appserv\www\jpgraph”
c)? ?? ???重新啟動apache服務器即可生效。
2、jpgraph的配置
Jpgraph提供了一個專門用于配置jpgraph類庫的文件jpg-config.inc.php在使用jpgraph前,可以通過修改文本文件來完成jpgraph的配置。
jpg-config.inc.php文件的配置需要修改以下兩項:
a)? ?? ??支持中文的配置
Jpgraph支持的中文標準字體可以通過修改chinese_ttf_font的設置來完成。
Define(‘chinese_ttf_font’,’bkai00mp.ttf’);
b)? ?? ??默認圖片格式的配置
根據當前PHP環境中支持的圖片格式來設置默認的生成圖片的格式。Jpgraph默認圖片格式的配置可以通過修改DEFAULT_GFORMAT的設置來完成。默認值auto表示jpgraph將依次按照png,gif和jpeg的順序來檢索系統支持的圖片格式。
DEFINE(“DEFAULT_GFORMAT”,”auto”);
注意:如果用戶使用的為jpgraph2.3版本,那么不需要重新進行配置。
此類庫簡單、易用,便于你自己修改和對功能的改善,能解決大部分
PHP
項目中執行的
SQL
操作。
初步工作
首先,請大家下載這個類庫
M.class.php 再下載一個
Mysqli
連接數據庫的類庫
MysqliDb.class.php(打包下載地址)
新建一個
includes
的文件夾,將下載下來的兩個
class
文件,放進去。
然后,請你在項目下創建一個
test.php
文件。注:UTF-8
文件格式
請先根據你機器的情況,填充以下代碼,用于連接數據庫:
復制代碼
代碼如下:
header('Content-Type:text/html;Charset=utf-8');
define('ROOT_PATH',
dirname(__FILE__));
define('DB_HOST',
'localhost');
//數據庫服務器地址
define('DB_USER',
'root');
//數據庫用戶名
define('DB_PWD',
'×××');//數據庫密碼
define('DB_NAME',
'×××');
//數據庫名稱
define('DB_PORT',
'3306');
//數據庫端口
function
__autoload($className)
{
require_once
ROOT_PATH
.
'/includes/'.
ucfirst($className)
.'.class.php';
//自動加載
class
文件
}
好了,上面的這些操作都是初步工作,下面正式進入類庫的講解。
類庫講解
首先,我們得實例化
M.class.php,實例化很簡單:
復制代碼
代碼如下:
$m
=
new
M();
//這步操作代表
M.class.php
中的所有功能都封裝在了變量
$m
中
注:
1、M類庫中的方法參數說明,請到
M.class.php
文件中看詳細的注釋,這里不再進行敘述。建議在學習的時候,對照著看下文件中的參數即注釋。
2、講解代碼中用到的數據庫結構為:
復制代碼
代碼如下:
CREATE
TABLE
`user`
(
`id`
int(8)
unsigned
NOT
NULL
auto_increment,
`name`
varchar(50)
default
NULL,
`email`
varchar(100)
default
NULL,
`age`
smallint(3)
default
NULL,
`class_id`
int(8)
default
NULL,
`commit_time`
int(10)
default
NULL,
PRIMARY
KEY
(`id`),
KEY
`name`
(`name`)
)
ENGINE=MyISAM
DEFAULT
CHARSET=utf8
復制代碼
代碼如下:
CREATE
TABLE
`class`
(
`class_id`
int(8)
NOT
NULL
auto_increment,
`class_name`
varchar(100)
default
NULL,
PRIMARY
KEY
(`class_id`)
)
ENGINE=InnoDB
DEFAULT
CHARSET=utf8
并添加一條測試數據。
3、M類庫中,大部分方法都分兩中類型,即:SQL方法;拼接方法,具體在實例中可以看出
4、以下稱述中的
M
為
M.class.php
文件
方法1、Insert()
添加數據
Insert
方法的全部使用案例如下:
復制代碼
代碼如下:
$m-Insert("user",
null,
array('焦焦',
'liruxing1715@sina點抗 ',
'23',
time()));
//
拼接方法:往`user`表中添加一條數據,返回值為數據庫影響的行數
$m-Insert("user",
null,
array('焦焦',
'liruxing1715@sina點抗 ',
'23',
time()),
true);
//
功能同上,返回
last_insert_id(插入的增長id)
$m-Insert("INSERT
INTO
`user`
(`name`,
`email`,
`age`,
`commit_time`)
VALUES
('張小花',
'zhangxiaohua@sina點抗 點吸煙 ',
'22',
'".time()."')");
//SQL方法,返回值為數據庫影響的行數
$m-Insert("INSERT
INTO
`user`
(`name`,
`email`,
`age`,
`commit_time`)
VALUES
('張小花',
'zhangxiaohua@sina點抗 點吸煙 ',
'22',
'".time()."')",
true);
//
同上,返回
last_insert_id
注:Insert
方法中的第二個參數若為null,可自動獲得插入表除
auto_increment
字段之外的所有字段,詳情請看M源文件;若要返回值為最后插入的
ID,那么請設置
Insert
方法的最后一個參數為
true(默認是false);
方法2、Update()
修改數據
update
方法的全部使用案例如下:
復制代碼
代碼如下:
$m-Update("user",
array('name'='李茹茹',
'age'=24),
"id=1");
//拼接方法,修改id為1的數據的名稱為“李茹茹”;年齡為“24”,其方法的返回值為受影響的行數
$m-Update("UPDATE
`user`
SET
`name`='李茹茹',
`age`=24
WHERE
id
=
1");
//SQL
用法,功能同上
方法3、Del()
刪除數據
Del
方法的全部使用案例如下:
復制代碼
代碼如下:
$m-Del('user',
'id=3');
//拼接方法:刪除`user`表中
id
為3的數據,返回受影響的行數
$m-Del("DELETE
FROM
`user`
WHERE
id=4");
//SQL方法:刪除`user`表中
id
為4的數據,返回受影響的行數
$m-Del("DELETE
FROM
`user`
WHERE
id
in
(10,
11,
12)");
//SQL方法:刪除多條數據,刪除`user`表中
id
為
10、11、12
的數據,返回受影響的行數
方法4、Total()
獲取記錄數,返回值都為int
Del
方法的全部使用案例如下:
復制代碼
代碼如下:
$m-Total('user');
//拼接方法:返回
`user`表中的記錄數,無條件
$m-Total('user',
'id1');
//拼接方法:返回
`user`表中
id
大于1的記錄數,有條件
$m-Total("SELECT
COUNT(*)
AS
total
FROM
`user`");
//SQL方法,注:使用SQL方法,語句中必須使用
"AS
total",否則會報錯
方法5、IsExists()
檢查數據是否存在,返回值為boolean
復制代碼
代碼如下:
$m-IsExists('user',
"`name`='焦焦'");
//拼接方法:返回`user`表中是否存在`name`為“焦焦”的數據,返回true,若不存在,返回false
方法6、InsertId()
獲取表下一個添加的自動增長id,注意,這里不進行添加操作,只是獲取下一個增長id
復制代碼
代碼如下:
echo
$m-InsertId('user');
//獲取`user`
表下一個添加的自動增長id
方法7、GetRow()
返回單條數據,返回值為一維數組
GetRow
方法的全部使用案例如下:
復制代碼
代碼如下:
$data
=
$m-GetRow("SELECT
`name`,email
FROM
`user`
WHERE
id=1");
//SQL方法,返回一維數組,例如:Array
(
[name]
=
焦焦
[email]
=
liruxing1715@sina點抗
)
$data
=
$m-GetRow("SELECT
u.`name`,
u.email,
c.class_name
FROM
`user`
u,
`class`
c
WHERE
u.class_id=c.class_id
AND
u.id=1");
//SQL方法,多表查詢
$data
=
$m-GetRow('user',
'`name`,email',
"id=1");
//拼接方法
$data
=
$m-GetRow('user
as
u,`class`
c',
'u.`name`,u.email,c.class_name',
"u.id=1
AND
u.class_id=c.class_id");
//拼接方法,多表查詢
$data
=
$m-GetRow("SELECT
`name`,email
FROM
`user`");
//如果沒有指定條件應該是顯示全部信息,但是在此方法中將默認顯示第一條(不推薦這么使用!!!)
$data
是查詢出來的一維數組。
方法8、GetOne()
返回單個數據
GetOne
方法的全部使用案例如下:
復制代碼
代碼如下:
$name
=
$m-GetOne("SELECT
`name`
FROM
`user`
WHERE
id=1");
//SQL方法,返回一個字符串,例如:焦焦
$name
=
$m-GetOne("user",
"name",
"id=1");
//拼接方法,返回一個字符串,例如:焦焦
方法9、FetchAll()
返回所有記錄
復制代碼
代碼如下:
$data
=
$m-FetchAll("user");
//返回`user`表中的所有記錄,以二維數組的形式
$data
=
$m-FetchAll("SELECT
*
FROM
`user`");
//SQL
方法,功能和返回值同上
$data
=
$m-FetchAll("user",
"name,email",
"id1",
'id
DESC',
'2');
//返回兩條id1的數據,只顯示name,email,并且以id
為倒序排序。注:請注意該方法的最后一個參數也可以為'0,2',目的是為分頁準備的,如果第一頁為'0,2'的話,那么第二頁就是'2,2'
//該方法也支持聯表查詢和多表查詢,下面以聯表查詢為例
$data
=
$m-FetchAll("`user`
as
u
LEFT
JOIN
`class`
as
c
ON
u.class_id=c.class_id",
"u.`name`,u.email,
c.class_name",
"u.id=1");
//注意:該拼接方法中,ON
添加的位置
注:對于該
FetchAll
方法,后續我會寫一篇使用該方法進行完美分頁的文章!!請關注。
方法10、MultiQuery()
執行多條SQL語句
復制代碼
代碼如下:
$sql
=
"INSERT
INTO
user
(`name`,email,
age,
class_id,
commit_time)
VALUES
('賈花花',
'jiahuahua@sina點抗 點吸煙 ',
'22',
'1',
'".time()."')";
//添加一個名叫“賈花花”的學生信息
$sql
.=
";DELETE
FROM
`user`
WHERE
`name`='焦焦'";
//刪除一條名叫“焦焦”的學生信息
//解釋:$sql
是多條
SQL
以英文;(分號)拼接起來的
$data
=
$m-MultiQuery($sql);
//返回為true,代表執行成功;為false,代表執行失敗
類庫講解完畢
到此該類庫的全部功能就講解完畢,希望你能多看看M文件,了解其內部運行的機制。M
文件不會存在執行緩慢情況,請大家放心使用。
如果在使用過程中出現
SQL
拼接錯誤,類庫會報出友善的錯誤提示。
有問題請留言,歡迎大家的批評和建議,加油!學習好運。
網站題目:php數據圖形化類庫 php繪圖
當前網址:http://vcdvsql.cn/article40/ddeepho.html
成都網站建設公司_創新互聯,為您提供關鍵詞優化、Google、App開發、微信小程序、定制網站、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯