利用Yii框架中的collections体验PHP类型化编程

简介: 注:20150514看过惠新宸 关于PHP7的PPT后,看到了这一特性将被支持。Scalar Type Declarationsfunction foo(int num)function bar (string name)function foobar() : float {}...

注: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);
目录
相关文章
|
1月前
|
安全 数据库连接 PHP
PHP编程中的关键性技术探究
在当今信息化社会,PHP作为一种流行的服务器端脚本语言,已经被广泛应用于网站开发和动态网页生成等领域。本文将深入探讨PHP编程中的关键性技术,包括数据库连接、安全性防护、性能优化等方面,旨在帮助读者更好地理解和运用PHP语言。
|
1月前
|
PHP 调度 开发者
探索PHP新特性:协程编程的崛起
PHP作为一种流行的服务器端脚本语言,近年来不断发展壮大。本文将重点探讨PHP中新兴的技术领域——协程编程,介绍其原理、优势以及在实际项目中的应用场景,帮助读者更好地理解并运用这一技术。
|
1月前
|
PHP 开发者
深入理解PHP7的返回类型声明
【2月更文挑战第29天】 在PHP 7中,一个新的特性被引入,即返回类型声明。这是一个强大的工具,它允许开发者明确指定函数或方法应返回的数据类型。本文将探讨这一特性的基本用法,以及如何利用它来提高代码的可读性和健壮性。
|
9月前
|
JSON 前端开发 安全
layui框架实战案例(22):多附件上传实战开发实录(php后端、文件删除、数据库删除)
layui框架实战案例(22):多附件上传实战开发实录(php后端、文件删除、数据库删除)
318 0
|
3月前
|
Serverless PyTorch 算法框架/工具
Serverless应用引擎部署问题之下个节点不可用如何解决
Serverless部署是指将应用程序部署到无服务器架构中,该架构允许开发者专注于代码而无需关心底层服务器的运行和维护;针对Serverless部署过程中可能遇到的挑战,本合集提供全面的指南和最佳实践,帮助开发者顺利实现应用的无服务器化部署。
366 2
|
1月前
|
前端开发 PHP 开发者
PHP编程中的异常处理与调试技巧
在PHP编程中,异常处理和调试是至关重要的环节。本文将深入探讨PHP中异常处理的机制,介绍常见的异常类型以及如何合理地进行异常处理。同时,还将分享一些实用的调试技巧,帮助开发者快速定位和解决问题,提高代码质量和效率。
13 4
|
1月前
|
IDE PHP 开发工具
PHP编程中的错误处理与调试技巧
在PHP编程过程中,经常会遇到各种错误和bug,正确的错误处理和调试技巧对于提高代码质量和开发效率至关重要。本文将介绍PHP编程中常见的错误类型、优秀的错误处理实践以及高效的调试技巧,帮助开发者更好地应对挑战。
15 0
|
1月前
|
存储 数据处理 PHP
PHP变量类型
PHP变量类型
18 0
|
3月前
|
PHP Windows
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
原生php实现自定义表单(支持基本类型+file类型(单文件上传))
原生php实现自定义表单(支持基本类型+file类型(单文件上传))