实例化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
在PHP3中实现SESSION的功能(三)
Oct 09 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
PHP判断变量是否为0的方法
Feb 08 PHP
php实现telnet功能示例
Apr 08 PHP
php中rename函数用法分析
Nov 15 PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
Dec 31 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
Yii2框架实现登陆添加验证码功能示例
Jul 12 PHP
解决Laravel5.2 Auth认证退出失效的问题
Oct 14 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
Oct 18 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模板技术原理【一】
2008/01/10 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
jquery 操作DOM案例代码分享
2012/04/05 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
jquery+css3打造一款ajax分页插件(自写)
2014/06/18 Javascript
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
不想让浏览器运行javascript脚本的方法
2015/11/20 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
Python聚类算法之基本K均值实例详解
2015/11/20 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
python web框架中实现原生分页
2019/09/08 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
商务日语毕业生自荐信范文
2013/11/14 职场文书
客服工作职责
2013/12/11 职场文书
煤矿班组长的职责
2013/12/25 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
家长会欢迎标语
2014/06/24 职场文书
2014年行政部工作总结
2014/11/19 职场文书
入党转正介绍人意见
2015/06/03 职场文书
技术转让协议书
2016/03/19 职场文书
Windows server 2003卸载和安装IIS的图文教程
2022/07/15 Servers