PHP通过反射实现对象的成员方法调用

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
class  Food
{
     public  $name  'apple' ;
 
}
 
class  Person
{
     const  SEX =  'boy' ;
     public  $name ;
     private  $age ;
     protected  $hobbies  = [];
 
     public  function  eat(Food  $foodObj , string  $waterName ):string
     {
         return  "eatting {$foodObj->name},drinking {$waterName}" ;
     }
 
     public  function  hello()
     {
         return  'Hello world' ;
     }
}
 
$instance  = ( new  ReflectionClass( 'Person' ))->newInstance();
$reflectionMethod  new  ReflectionMethod( 'Person' 'eat' );
 
//校验成员方法是否是public,可访问的
if  (! $reflectionMethod ->isPublic()) {
     echo  '不能访问Person类的eat方法'  . PHP_EOL;
     return ;
}
 
//ReflectionParametr对象组成的数组
$parameters  $reflectionMethod ->getParameters();
if  ( empty ( $parameters )) {
     echo  $reflectionMethod ->invoke( $instance );
else  {
     $args  = [];
     foreach  ( $parameters  as  $parameterObj ) {
         if  ( $reflectionclass  $parameterObj ->getClass()) {
             $className  $reflectionclass ->getName();
             $args [] = ( new  ReflectionClass( $className ))->newInstance();
         else  {
             $args [] =  'hello' ;
         }
     }
     echo  $reflectionMethod ->invoke( $instance , ... $args );
}


  1. 实现ReflectionClass对象

  2. 实现ReflectionMethod对象

  3. 实现ReflectionParameter对象

  4. 通过反射实现对象的依赖注入











本文转自 hgditren 51CTO博客,原文链接:http://blog.51cto.com/phpme/2053752,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
2月前
|
缓存 PHP 开发者
PHP中的自动加载机制及其优化方法
传统的PHP开发中,经常会遇到类文件加载繁琐、效率低下的情况,而PHP的自动加载机制能够很好地解决这一问题。本文将深入探讨PHP中的自动加载机制,介绍其原理及实现方式,并提出了一些优化方法,帮助开发者提升代码加载效率,提高应用性能。
|
2月前
|
Java 程序员 PHP
PHP对象和类
PHP对象和类
35 0
|
2月前
|
JSON PHP 数据格式
PHP curl方法封装
PHP curl方法封装
52 0
|
1月前
|
JSON 搜索推荐 大数据
Elasticsearch:从 ES|QL 到 PHP 对象
【6月更文挑战第9天】Elasticsearch 是一款强大的开源搜索引擎,适用于大数据处理和分析。在 PHP 开发中,使用 ES|QL 构建复杂查询后,通常需将查询结果转换为 PHP 对象。通过 `json_decode()` 函数解析 JSON 数据,可以实现这一目标。示例代码展示了如何将 Elasticsearch 响应转换为 PHP 对象并遍历数据。这样,我们可以进一步处理和操作数据,适应不同项目需求。随着技术和方法的更新,不断学习和适应将提升我们在开发中的效率和创新力。
50 10
|
1月前
|
JSON PHP 数据格式
蓝易云 - PHP用CURL发送Content-type为application/json的POST请求方法
在这段代码中,我们首先创建了一个包含我们要发送的数据的数组,并使用 `json_encode`函数将其转换为JSON格式。然后,我们初始化了一个cURL会话,并设置了一些选项,包括POST请求方法、要发送的数据、返回结果和HTTP头部信息。最后,我们执行了cURL请求并关闭了会话。
37 2
|
14天前
|
SQL 缓存 PHP
PHP性能优化的科学方法与实践
在追求网站和应用高性能的当下,PHP作为广泛使用的服务器端脚本语言,其性能优化变得尤为重要。本文将基于数据导向和科学严谨的原则,探讨PHP性能优化的有效策略。首先,通过分析PHP运行机制和性能瓶颈,指出优化的必要性;然后,结合最新的研究成果和实验数据,详细介绍代码层面、配置调优、数据库交互以及缓存应用等方面的具体优化措施;最后,以案例形式展示优化效果,并对PHP性能优化的未来趋势进行展望。旨在为开发者提供一套逻辑严密、实证支持的性能提升方法论。
14 0
|
16天前
|
PHP
php方法
【7月更文挑战第2天】php方法
11 0
|
17天前
|
算法 PHP
轻松实现商品多属性组合:深入理解笛卡尔乘积的 PHP 实现方法
在电商场景中,生成商品属性组合的关键是计算笛卡尔乘积。本文以通俗易懂的方式展示了如何用PHP实现这一功能。使用Laravel时,可直接通过`collect`对象的`crossJoin`方法轻松获取;手动实现则涉及递归算法,通过`CarteSianHandler`类完成。最终结果为一个包含所有属性组合的数组,适用于处理商品的多种属性选项。
14 0
|
17天前
|
监控 安全 PHP
PHP性能优化的科学方法
在数字时代的浪潮中,PHP作为广泛使用的服务器端脚本语言,其性能优化对于提升网站响应速度和用户体验至关重要。本文将深入探讨PHP性能优化的科学方法,从代码层面的优化到服务器配置的调整,以及利用工具进行性能监控与分析。我们将基于权威数据源和实际案例,揭示如何通过科学严谨的方法来提升PHP应用的性能。
16 0