实例化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获取网卡地址的代码
Apr 09 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
PHP中date与gmdate的区别及默认时区设置
May 12 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
May 19 PHP
30个php操作redis常用方法代码例子
Jul 05 PHP
php通过修改header强制图片下载的方法
Mar 24 PHP
php简单随机字符串生成方法示例
Apr 19 PHP
PHP迭代器和迭代的实现与使用方法分析
Apr 19 PHP
PHP模型Model类封装数据库操作示例
Mar 14 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
Oct 24 PHP
PHP接入微信H5支付的方法示例
Oct 28 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
Aug 11 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
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
性能优化之代码优化页面加载速度
2017/03/01 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
英文版餐饮运营管理求职信
2013/11/06 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
企业总经理岗位职责
2014/02/13 职场文书
入党思想汇报怎么写
2014/04/03 职场文书
公安个人四风问题对照检查及整改措施
2014/10/28 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
电台广播稿范文
2015/08/19 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
用Java实现简单计算器功能
2021/07/21 Java/Android