实例化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 数组实例说明
Aug 18 PHP
谷歌音乐搜索栏的提示功能php修正代码
May 09 PHP
php 计划任务 检测用户连接状态
Mar 29 PHP
关于zend studio 出现乱码问题的总结
Jun 23 PHP
浅析php变量作用域的一些问题
Aug 08 PHP
php除数取整示例
Apr 24 PHP
将二维数组转为一维数组的2种方法
May 26 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
php投票系统之增加与删除投票(管理员篇)
Jul 01 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
Oct 29 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
php快速导入大量数据的实例方法
Sep 23 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 定界符格式引起的错误
2011/05/24 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
跟我学Laravel之安装Laravel
2014/10/15 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
jquery中获取select选中值的代码
2011/06/27 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
python getopt 参数处理小示例
2009/06/09 Python
python发送arp欺骗攻击代码分析
2014/01/16 Python
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
python 数据的清理行为实例详解
2017/07/12 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
浅谈django2.0 ForeignKey参数的变化
2019/08/06 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
销售总经理岗位职责
2014/03/15 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
2014年统战工作总结
2014/12/09 职场文书
个人业务学习心得体会
2016/01/25 职场文书
2019个人工作总结
2019/06/21 职场文书
react国际化react-intl的使用
2021/05/06 Javascript
js Proxy的原理详解
2021/05/25 Javascript