实例化php类时传参的方法分析


Posted in PHP onJune 05, 2020

本文实例讲述了实例化php类时传参的方法。分享给大家供大家参考,具体如下:

当我们实例化一个php类的时候,要怎么传递参数呢?这取决于该类的构造方法。

例:

person.class.php

<?php
    class person{
        var $name;
        var $color;
        var $sex;
        var $age;
        function __construct($name,$age='',$sex='boy'){
            $this->name = $name;
            $this->age = $age;
            $this->sex = $sex;
            $this->color = 'yello';
        }
        function eat(){
            echo $this->name.'要吃饭';
        }
        function xinxi(){
            echo $this->name.' is '.$this->sex.' and age is '.$this->age.' fuse is '.$this->color;
        }
        function zuoyong(){
          //类似于这样的内部调用,相当于把eat()的代码引入到zuoyong()里面,而不是跳转到eat()里面继续执行
            //如果是http://localhost/zuoyong?food=xigua这样的url来调用zuoyong()
            //那么eat()中可直接通过$_GET['food']获取url参数,因为全局变量可在函数内部使用
            $this->eat();
        }
    }
?>

son.php

<?php
    include('person.class.php');
    $son = new person('cuihua',25,'girl');//此处的参数传递要和类的构造方法里面的参数顺序对应
    //$son->xinxi();//cuihua is girl and age is 25 fuse is yello
    $son->name = '田妞';
    $son->eat();//田妞要吃饭
?>

注:php类的属性($name、$age等)可以在该类的全局范围内使用,可以把类的属性视为“该类的”全局变量。但是当外部程序重新调用这个类中的方法时,该类会重新被实例化,也就是说要再次执行构造方法,那么上一次给$name等属性赋的值就会被清空,所以$name等属性的值不会像常量或是session中的值那样一直保持下去。

son2.php

<?php
    include('person.class.php');
    $son = new person('cuihua',25,'girl');
    $son2 = $son;
    $son2->name = '田妞';
    $son->eat();//田妞要吃饭
?>

当我把$son对象赋予$sin2之后,改变了$son2的name参数,此时发现$son的name参数也响应的跟着改变,由此可见:在php5中,把对象赋值给变量,是按引用传递对象,而不是进行值传递,此时并不会创建$son的副本。传递对象到函数,或从方法返回对象,是引用传递还是值传递,待验证。

可以通过var_dump()打印对象,不过只能打印对象的属性,它的方法不能打印出来,要想获取对象的方法列表,可以用get_class_methods函数。

<?php
$son = new person('cuihua',25,'girl');
var_dump($son);
/*
object(person)[1]
 public 'name' => string 'cuihua' (length=6)
 public 'color' => string 'yello' (length=5)
 public 'sex' => string 'girl' (length=4)
 public 'age' => int 25
*/
 
$mon = get_class_methods($son);
var_dump($mon);
/*
array (size=4)
 0 => string '__construct' (length=11)
 1 => string 'eat' (length=3)
 2 => string 'xinxi' (length=5)
 3 => string 'zuoyong' (length=7)
*/
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php读取msn上的用户信息类
Dec 05 PHP
php Try Catch异常测试
Mar 01 PHP
php Rename 更改文件、文件夹名称
May 24 PHP
Php Ctemplate引擎开发相关内容
Mar 03 PHP
web server使用php生成web页面的三种方法总结
Oct 28 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
PHP向浏览器输出内容的4个函数总结
Nov 17 PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 PHP
php版微信公众号接口实现发红包的方法
Oct 14 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 06 PHP
PHP页面静态化――纯静态与伪静态用法详解
Jun 05 #PHP
PHP预定义接口――Iterator用法示例
Jun 05 #PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
Jun 05 #PHP
PHP标准库 (SPL)――Countable用法示例
Jun 05 #PHP
PHP类的自动加载与命名空间用法实例分析
Jun 05 #PHP
如何在PHP中生成随机数
Jun 04 #PHP
PHP 扩展Memcached命令用法实例总结
Jun 04 #PHP
You might like
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
javascript整除实现代码
2010/11/23 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
jquery实现表单获取短信验证码代码
2017/03/13 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
python 七种邮件内容发送方法实例
2014/04/22 Python
Python中实现的RC4算法
2015/02/14 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
Solaris操作系统的线程机制
2012/12/23 面试题
原料仓管员岗位职责
2014/04/12 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
一文搞懂Java中的注解和反射
2022/06/21 Java/Android