实例化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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
Jan 30 PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 PHP
PHP Array交叉表实现代码
Aug 05 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
Jun 18 PHP
解析php中eclipse 用空格替换 tab键
Jun 24 PHP
PHP用身份证号获取星座和生肖的方法
Nov 07 PHP
php上传文件问题汇总
Jan 30 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
php 调用ffmpeg获取视频信息的简单实现
Apr 03 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 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
推荐几个开源的微信开发项目
2014/12/28 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
你不知道的高性能JAVASCRIPT
2016/01/18 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
Python入门篇之字符串
2014/10/17 Python
python简单获取数组元素个数的方法
2015/07/13 Python
深入解析Python中的线程同步方法
2016/06/14 Python
Python随机数random模块使用指南
2016/09/09 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
求职简历自荐信范文
2013/10/21 职场文书
职业规划书如何设计?
2014/01/09 职场文书
《匆匆》教学反思
2014/02/22 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
感恩寄语大全
2014/04/11 职场文书
森林病虫害防治方案
2014/06/02 职场文书
诚实守信主题班会
2015/08/13 职场文书
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript