实例化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和MySQL保存和输出图片
Oct 09 PHP
使用TinyButStrong模板引擎来做WEB开发
Mar 16 PHP
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
php smarty 二级分类代码和模版循环例子
Jun 01 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
Jun 25 PHP
phpmyadmin打开很慢的解决方法
Apr 21 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
Jun 10 PHP
php实现图片以base64显示的方法
Oct 13 PHP
php对xml文件的增删改查操作实现方法分析
May 19 PHP
PHP 断点续传实例详解
Nov 11 PHP
PHP实现的大文件切割与合并功能示例
Apr 10 PHP
php微信小程序解包过程实例详解
Mar 31 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数组
2006/10/09 PHP
php实现两个数组相加的方法
2015/02/17 PHP
PHP中的流(streams)浅析
2015/07/02 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
JavaScript中eval()函数用法详解
2015/12/14 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
微信小程序如何使用globalData的方法
2019/06/06 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
10张动图学会python循环与递归问题
2021/02/06 Python
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
新闻专业应届生求职信
2013/10/31 职场文书
校庆活动方案
2014/03/31 职场文书