实例化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 相关文章推荐
MYSQL数据库初学者使用指南
Nov 16 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
Mar 02 PHP
在php和MySql中计算时间差的方法
Apr 22 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 PHP
smarty简单分页的实现方法
Oct 27 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
php中执行系统命令的方法
Mar 21 PHP
100行PHP代码实现socks5代理服务器
Apr 28 PHP
PHP生成可点击刷新的验证码简单示例
May 13 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
Jul 03 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
聊天室php&amp;mysql(二)
2006/10/09 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
JS小游戏之仙剑翻牌源码详解
2014/09/25 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
2016/04/26 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
python简单文本处理的方法
2015/07/10 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
实时获取Python的print输出流方法
2019/01/07 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
摩托车和ATV零件、配件和服装的首选在线零售商:MotoSport
2017/12/22 全球购物
证券期货行业个人的自我评价
2013/12/26 职场文书
电大会计学自我鉴定
2014/02/06 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
董事长助理工作职责
2014/06/08 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
先进工作者推荐材料
2014/12/23 职场文书
小学班主任自我评价
2015/03/11 职场文书