利用Yii框架中的collections體驗PHP型別化程式設計
注:20150514
看過
惠新宸 關於PHP7的PPT後,看到了這一特性將被支援。
Scalar Type Declarations
function foo(int num)
function bar (string name)
function foobar() : float {}
function add(int l, int r) : int {}
class A {
public function start (bool start) {}
}
Return Type Declarations
function foo(): array {
return [];
}
interface A {
static function make(): A;
}
function foo(): DateTime {
return null;
}
//PHP Fatal error: Return value of foo() must be an instance of DateTime, null returned
最近有些迷戀型別化程式設計,甚至因為OSX上無法編譯安裝hhvm準備再拿一臺機器裝Linux來跑。
在折騰期間,想起PHP本身對形參的型別化支援 – array與object,其實可以通過定義一些基礎類來解決PHP不能支援基礎型別形參的問題。以前也整理過一篇文章談過這個問題:http://www.cnblogs.com/x3d/p/4285787.html 。
Yii中其實針對集合資料,做了一些實現與封裝,如CList、CMap、CTypedList、CTypedMap,基本實現型別化陣列資料的指定,但還缺乏對基礎型別的封裝,如int、string等。
接前面一篇博文,呼叫例項為:
$name = `jimmy`;
//findUserByName($name); // PHP Catchable fatal error: Argument 1 passed to findUserByName() must be an instance of CString, string given
$name = new CString($name);
findUserByName($name);
$id = 10000;
//findUserById($id); // Catchable fatal error: Argument 1 passed to findUserById() must be an instance of CInteger, integer given
$id = new CInteger($id);
findUserById($id);
而對於集合類資料,則藉助於集合類。
function findUsersByNames(CTypedList $names) {
//code
}
$names = new CTypedList(`CString`);
$names[] = new CString(`jimmy`);
$names[] = new CString(`tommy`);
findUsersByNames($names);
相關文章
- 將 goaop 整合到 Yii,在 Yii 中優雅的面向切面程式設計Go程式設計
- PHP 列舉型別的管理與設計PHP型別
- 程式設計師的(血型)型別程式設計師型別
- Yii 框架Model和ActiveRecord 的區別框架
- 在程式設計中體驗純粹的快樂程式設計
- Java中的泛型程式設計:深入理解型別引數與型別邊界的使用Java泛型程式設計型別
- 內容型遊戲的體驗設計思考遊戲
- Metal:對 iOS 中 GPU 程式設計的高度優化的框架iOSGPU程式設計優化框架
- 初探 TypeScript 型別程式設計TypeScript型別程式設計
- 五種型別的程式設計師型別程式設計師
- 程式設計師的五種型別程式設計師型別
- 程式設計師的四種型別程式設計師型別
- 5種型別的程式設計師型別程式設計師
- 史丹佛程式設計正規化第二課筆記(資料型別在記憶體中的表示)程式設計筆記資料型別記憶體
- 體驗程式設計師的生活程式設計師
- 全網最適合入門的物件導向程式設計教程:42 Python常用複合資料型別-collections容器資料型別物件程式設計Python資料型別
- PHP中的防禦性程式設計PHP程式設計
- PHP 中的防禦性程式設計PHP程式設計
- Yii1.1.4釋出,高效能的PHP框架PHP框架
- 在PHP的Yii框架中使用行為Behaviors的方法PHP框架
- C# 4.0中的動態型別和動態程式設計C#型別程式設計
- 軟體架構, 軟體框架,設計模式的區別架構框架設計模式
- Web程式設計師最常用的11款PHP框架Web程式設計師PHP框架
- 以“反轉”強化體驗 遊戲中的反直覺設計遊戲
- 集合框架-Collections框架
- php在yii2中的cookie用法PHPCookie
- VS中”LPTSTR" 型別的值不能用於初始化 "char *" 型別的實體型別
- PHP7中的資料型別PHP資料型別
- PHP中的型別約束介紹PHP型別
- 優秀PHP優秀框架Laravel和Yii的詳解PHP框架Laravel
- PHP框架Yii系列教程(一):入門例項PHP框架
- php 框架 yii control 中使用佈局PHP框架
- Python程式設計常用的資料型別Python程式設計資料型別
- 1. 揭秘Spring型別轉換 - 框架設計的基石Spring型別框架
- [譯] 值型別導向程式設計型別程式設計
- nodeJS的回撥程式設計 體驗NodeJS程式設計
- PHP高階程式設計:模式、框架與測試PHP程式設計模式框架
- 智慧小程式體驗設計指引