`

php 5.3中的一个type hinting的用法

    博客分类:
  • PHP
php 
阅读更多
今天偶然看php 5.3中的一个特性,叫type hinting(类型提示?),感觉怪怪的,看了下,
大概如下,比如有个类:

class Customer {
...
}

class Order {
   public function myfunc($c)
   {
...
   }
}

$o = new Order();
$o->myfunc(xxxxx);

如果myfunc中没规定参数的类型,则可以传不同类型的参数进去,为了规范,假设要传入的是只能customer类的实例,可以这样:
class Customer {
...
}

class Order {
   public function myfunc(Customer $c)
   {
...
   }
}
  现在myfunc只能接收Customer类的实例,如果传进去的不是,则报FATAL错了

再看一个例子:
class Type_hint{ 
    function hint_method(array $arr){
    print_r($arr);echo "<br/>";
    } 
    
}
class Type_hint_new
{
    function hint_object(Type_hint $obj){  // Here, If I didn’t pass in an Type_hint object to hint_object(), a FATAL_ERROR was occured.

        //echo $obj->hint_method(); // Fatal Error: Argument must be an array
        echo $obj->hint_method(array('P','H','P')); //First parameter must be an object of Type_hint class
    } 
    function hint_null($obj = NULL) {
            echo "Allow NULL";
        }
}

$obj=new type_hint();
$obj_new = new Type_hint_new();
$obj->hint_method(array('b','h','u','m','i'));
$obj_new->hint_object($obj);  
$obj_new->hint_null(NULL);



输出:
Array ( [0] => b [1] => h [2] => u [3] => m [4] => i )
Array ( [0] => P [1] => H [2] => P )
Allow NULL

而E_RECOVERABLE_ERROR 这个PHP.INI开关可以设置这个东西
2
0
分享到:
评论

相关推荐

    PHP5.3.2011中文帮助文档手册

    9. **简化的析构函数**:在PHP5.3中,析构函数不再需要`__destruct()`关键字,直接定义一个类的方法即可。 10. **性能提升**:PHP5.3在内部算法和内存管理方面进行了优化,提高了运行速度和资源利用率。 **学习...

    php5.3php_curl

    标题“php5.3php_curl”提示我们关注的是PHP 5.3版本的一个特定功能模块,即PHP的cURL扩展。cURL是用于在PHP中处理URLs的库,它允许开发人员通过各种协议(如HTTP、HTTPS、FTP、FTPS等)传输数据。在PHP 5.3中,cURL...

    ubuntu 同时装php5.3和5.2

    例如,在一个需要使用Zend Optimizer的项目中,由于该工具仅支持PHP 5.2,而Ubuntu系统默认安装的是PHP 5.3,因此需要一种方法来同时安装这两个版本的PHP。本文将详细介绍如何在Ubuntu环境下成功地安装并配置PHP 5.2...

    PHP5.3最新版本

    PHP5.3是PHP语言的一个重要版本,发布于2010年,它引入了许多新特性和改进,为开发者提供了更强大的工具和更高的性能。在这个版本中,PHP进行了许多内部优化,增强了其在Web开发中的功能,特别是对于大型应用程序的...

    php5.3的memcache

    PHP5.3是PHP的一个重要版本,引入了新的特性并修复了一些问题。由于PHP5.3是非线程安全的,因此在选择Memcache扩展时,需要使用与之匹配的非线程安全版本。描述中提到“好些都是单独版本”,这意味着针对特定PHP...

    php5.3 64位WampServer

    PHP 5.3是PHP语言的一个重要版本,发布于2009年,引入了许多新功能和改进,其中包括: 1. **命名空间(Namespaces)**:这是对代码组织的一大改进,允许在单个文件中定义多个独立的命名空间,以避免类名冲突。 2. ...

    php_mongo.dll php5.3 vc6

    标题中的"php_mongo.dll php5.3 vc6"指的是PHP的一个扩展模块,用于连接和操作MongoDB数据库。这个特定的版本是为PHP 5.3编译的,并且使用了Visual C++ 6 (VC6)作为编译器。在PHP环境中,扩展通常以动态链接库(DLL...

    兼容到php5.3以上(php5.6,php7)的Smtp类

    文件列表中的"phpmail"可能是包含这个升级后的SMTP类的文件,它可能是一个PHP邮件发送类库,帮助开发者轻松地通过SMTP协议发送邮件,同时兼容了多个PHP版本。使用这样的库可以避免因PHP版本升级带来的兼容性问题,...

    PHP.zip_php5.3_php5.3 chm

    PHP 5.3引入了命名空间(Namespaces),这是一个解决大型项目中类名冲突的重要功能。通过命名空间,你可以组织相关的类和函数,避免命名冲突问题,提高了代码的可维护性和可读性。 ### 3. Late Static Binding 晚...

    php5.3-php5.4mongo扩展

    《PHP 5.3到5.4版本Mongo扩展详解及安装指南》 ...总的来说,这个“php5.3-php5.4mongo扩展”资源对于需要在PHP 5.3和5.4版本上操作MongoDB的开发者来说是一份非常实用的资料,确保了扩展的可用性和兼容性。

    php_solr.dll ,php5.3版本

    Apache Solr 是一个开源的企业级搜索平台,它允许快速、可扩展的全文检索,以及丰富的搜索功能和结果排序。在 PHP 中集成 Solr 扩展,可以极大地提高开发效率,使开发者能够轻松地在网站中实现高级搜索功能。 标题...

    PHP5.3入门经典(Beginning PHP 5.3)源码+中文PDF+英文PDF

    1. **命名空间(Namespace)**:PHP5.3引入了命名空间的概念,允许开发者在同一个项目中使用相同的类名而不会冲突。这对于大型项目来说是极其重要的,它使得代码组织更加有序,提高了代码的可维护性和复用性。 2. *...

    PHP 5.3入门经典(所有的源码)

    1. **命名空间(Namespaces)**:这是PHP 5.3引入的一个重要特性,用于解决大型项目中类名冲突的问题。通过命名空间,可以将类、接口和函数组织到各自的逻辑结构中,使得代码更加清晰,易于管理和维护。 2. **晚期...

    php_imagick扩展 php 5.3

    在PHP 5.3这个版本中,Imagick扩展扮演着至关重要的角色,为开发者提供了丰富的图像处理功能。 `php_imagick-3.1.2-5.3-nts-vc9-x86`是专为PHP 5.3非线程安全(NTS)版本、VC9编译器构建和x86架构设计的Imagick扩展包...

    windows下php5.3 v9 redis扩展 php_redis.dll

    在PHP中,为了使用Redis服务,我们需要安装对应的扩展,即php_redis.dll,这是一个动态链接库文件,使得PHP解释器能够识别并调用Redis相关的函数。 描述中的“windows下php5.3 redis扩展 php_redis.dll”进一步强调...

    php5.3版本中文全手册及正确的打开方式

    PHP 5.3 版本是 PHP 语言发展的一个重要里程碑,它引入了许多新特性、改进和优化,为开发者提供了更强大的功能和更好的性能。这份中文全手册是学习和掌握 PHP 5.3 的宝贵资源,它涵盖了语言基础、函数库、面向对象...

    php5.3安装包(LINUX)

    PHP 5.3是PHP语言的一个重要版本,它在2010年发布,引入了许多新特性、性能优化以及安全改进。在Linux环境下安装PHP 5.3是为服务器配置Web开发环境的关键步骤。以下是对PHP 5.3在Linux系统安装过程中的详细解释和...

    php5.3版本可用的memcache扩展

    标题中的“php5.3版本可用的memcache扩展”指的是PHP的一个扩展库——Memcache,它是专门为PHP设计的,用于与Memcached缓存系统交互。Memcached是一个高性能、分布式的内存对象缓存系统,可以用来存储和检索数据,如...

    php5.3版本开发环境源代码

    PHP5.3是PHP发展过程中的一个重要里程碑,引入了许多新特性,优化了性能,并修复了大量的bug,为开发者提供了更为强大的工具和更稳定的开发环境。本文将深入探讨PHP5.3版本的开发环境源代码,揭示其中的关键知识点。...

    php_igbinary.dll与vc9编译redis.dll扩展适合php5.3

    Redis是一个内存中的数据结构存储系统,可作为数据库、缓存和消息中间件。`php_redis-2.2.5-5.3-ts-vc9-x86`表示这是适用于PHP 5.3的`redis`扩展,同样采用VC9编译器,线程安全,并且适用于32位Windows系统。这个...

Global site tag (gtag.js) - Google Analytics