实例化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中的正规表达式(一)
Oct 09 PHP
PHP中foreach循环中使用引用要注意的地方
Jan 02 PHP
mac下使用brew配置环境的步骤分享
May 23 PHP
php 读取文件头判断文件类型的实现代码
Aug 05 PHP
php获取文件大小的方法
Feb 26 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
php输出xml必须header的解决方法
Oct 17 PHP
php 删除cookie方法详解
Dec 01 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 PHP
PHP异常类及异常处理操作实例详解
Dec 19 PHP
PHP chunk_split()函数讲解
Feb 12 PHP
laravel 时间格式转时间戳的例子
Oct 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
PHP生成不重复标识符的方法
2014/11/21 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
php框架CodeIgniter主从数据库配置方法分析
2018/05/25 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
javascript实现2016新年版日历
2016/01/25 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
python 实现插入排序算法
2012/06/05 Python
使用python装饰器验证配置文件示例
2014/02/24 Python
python简单获取数组元素个数的方法
2015/07/13 Python
python动态网页批量爬取
2016/02/14 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
python中的二维列表实例详解
2018/06/19 Python
使用Django简单编写一个XSS平台的方法步骤
2019/03/25 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
FOREO官方网站:LUNA露娜洁面仪
2016/11/28 全球购物
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
毕业生物理教师求职信
2013/10/17 职场文书
酒店总经理欢迎词
2014/01/15 职场文书
年会主持词结束语
2014/03/27 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书