实例化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中的串行化变量和序列化对象
Sep 05 PHP
PHP4引用文件语句的对比
Oct 09 PHP
用PHP产生动态的影像图
Oct 09 PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
Feb 16 PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 PHP
php学习笔记之面向对象
Nov 08 PHP
php精确的统计在线人数的方法
Oct 21 PHP
PHP常用的小程序代码段
Nov 14 PHP
PHP中单例模式与工厂模式详解
Feb 17 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
phpfpm的作用和用法
Oct 10 PHP
Laravel如何实现自动加载类
Oct 14 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解压tar.gz格式文件的方法
2016/02/14 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
解析vue中的$mount
2017/12/21 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
如何用Matplotlib 画三维图的示例代码
2020/07/28 Python
python如何使用腾讯云发送短信
2020/09/17 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
美国购车网站:TrueCar
2016/10/19 全球购物
什么是数组名
2012/05/10 面试题
机电专业求职信
2014/06/14 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
先进党支部事迹材料
2014/12/24 职场文书
介绍信格式
2015/01/30 职场文书
防汛通知
2015/04/25 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
python神经网络Xception模型
2022/05/06 Python