php怎么实现匿名评论,PHP-匿名对象与匿名类的实现过程-0905

* 匿名类:

* 1. php 7.0+ 才支持

* 2. 类似于匿名函数,就是没有名称的类

* 3. 匿名类适合于一次性的创建与引用

* 4. 匿名类总是与: new 配套使用

类的三种访问方式

实例

/**

* 匿名类:

* 1. php 7.0+ 才支持

* 2. 类似于匿名函数,就是没有名称的类

* 3. 匿名类适合于一次性的创建与引用

* 4. 匿名类总是与: new 配套使用

*/

class Lei //定义一个类

{

private $name = '我'; //声明一个私有属性

public function story($name)  //使用一个方法

{

return $this->name.'喜欢: '.$name.'';  //返回XX喜欢XX

}

}

//有三种方式来访问 story方法

//1、实例化一个对象  echo输出

$Lei = new Lei();

echo $Lei->story('篮球').'


';//我喜欢篮球

//2、匿名对象

echo (new Lei())->story('足球').'


';//我喜欢足球

//3、匿名类 只有php 7.0+ 才支持

echo (new class{

private $name = '我'; //声明一个私有属性

public function story($name)  //使用一个方法

{

return $this->name.'喜欢: '.$name.'';  //返回XX喜欢XX

}

})->story('乒乓球').'


';

运行实例 »

点击 "运行实例" 按钮查看在线实例

匿名类的三种场景

实例

echo '

匿名类的三种应用场景

';

echo '

1、匿名类中的构造方法

';

echo (new class('小明'){

private $name;

//匿名类中的构造方法

public function __construct($name){

$this->name=$name;

}

public function story($name){

return $this->name.'喜欢: '.$name.'';

}

})->story('篮球').'


';

echo '

2、在匿名类中可以继承其它类中的成员

';

class Friend{

protected $girl;

public function __construct($job='')

{

$this->girl = $job;

}

public function show()

{

return $this->girl ? : '文员';

}

}

echo (new class('小红','作家') extends Friend{

private $name;

public function __construct($name,$job='')

{

parent::__construct($job);

$this->name = $name;

}

public function story($name)

{

return $this->name.'喜欢上了: '.$name.'';

}

public function show()

{

return $this->name.'的工作是: '.''.parent::show().'';

}

})->show(). '


';

echo '

3.可以在类声明中嵌套一个匿名类

';

class Anmal   // 宿主类, 父类的角色

{

public $name = '狗';

protected $color = '黑色';

private $type = '哈士奇';

protected function info ()

{

return '市1场售价3000元';

}

public function demo1()

{

// 宿主类中的私有成员不能在匿名类中直接使用

// 可以通过在匿名类创建一个构造方法将宿主类中的私有成员进行注入

// 3. 将宿主类中的私有属性做为匿名类的构造方法的参数传入即可

return (new class ($this->type) extends Anmal {

//1. 在匿名类中创建一个属性用来接收宿主类中的私有属性

private $type;

//2. 创建一个构造方法

public function __construct($type)

{

$this->type = $type;

}

public function demo2()

{

return '我是嵌套匿名类中的方法: '. __METHOD__;

}

public function show()

{

return

'动物的名称是: ' .$this->name. '
'.//可以访问

'动物的颜色是: ' .$this->color. '
'.//可以访问

'动物的品1种是: ' .$this->type. '
';

}

});

}

}

// 访问匿名类中的 demo2()

echo (new Anmal())->demo1()->demo2();

echo '


';

echo (new Anmal())->demo1()->show();

运行实例 »

点击 "运行实例" 按钮查看在线实例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php cli 编程,php-cli下编程如何分层架构、面向对象、统一入口文件?

以往写cli下运行的业务或者测试代码,总是新建文件,面向过程编写代码。几次之后,cli目录下好多文件,即便勉强在一个cli测试文件中写了一个类,也是让其中的一个方法自启动,要测试别的方法,总是要修…

matlab中平均函数用法,matlab中怎样在X的指定范围内求y的平均值

有两组数据,前面一组值设为x后面一组设为y。x是坐标的变化范围,y是每个坐标下力的大小,怎样在X的指定范围内求y的平均值??比如下面x范围是从-18.19959641到-18.00003052之内的 怎样求得-18.19959641到-18.18049049这个…

php中gd为什么是乱码的,php gd库中文乱码怎么解决?

php gd库中文乱码怎么解决?,中文,乱码,字符,选项,字体php gd库中文乱码怎么解决?易采站长站,站长之家为您整理了php gd库中文乱码怎么解决?的相关内容。解决方法:1、网站整站使用UTF8编码,如果已使用GB2312…

php观察者模式和注册数模式,PHP观察者模式

观察者模式的核心是允许你的应用程序注册一个回调,当某个特定的事件发生时便会触发它。实现观察者模式,我们使用一个名为Event的类实现它,这个类有2个公共的方法。1. registerCallback() :这个方法允许你用规定的名称附加许多回调到一个事件中…

php实现飘窗,JS实现网站图片飘窗效果,JavaScript悬浮广告(附详细代码)

原标题:JS实现网站图片飘窗效果,JavaScript悬浮广告(附详细代码)JS实现网站图片飘窗效果,Java悬浮广告,郑州SEO提供以下代码,仅供参考:飘窗效果-丁光辉博客(www.dingguanghui.com)*{margin:0px;padding:0px…

php spss,spss新手入门

随着速度越来越快,计算机的功能越来越多,计算统计功能反而已经成为了计算机的一个次要部分.不过,对于我们这些从事社会学学习和研究的人来说,快速的计算和统计仍旧是我们使用计算机的主要功能,所以我们平日的工作总是离不开SPSS(Statistical Package for the SocialScience社会…

load out mysql,快速的mysql导入导出数据(load data和outfile)

当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取。1 指定关键词low_priority,MySQL将会等到没有其他人读这个表的时候,才把插入数据。可以使用如下的命令:load data low_priority infile "/home/m…

matlab rem和mod,Matlab的mod和rem

通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。这是由于这两个函数的生成机…

php sslv3握手失败,Boost Beast握手:sslv3警报握手失败错误

我正在使用Boost Beast连接到一个Web Socket服务器,但是我一直收到一个错误Resolving push-private.kucoin.com:443...Performing SSL handshake...terminate called after throwing an instance of boost::wrapexcept<:system::system_error>what(): handshake: sslv3 a…

python猜猜我是几,我在python中猜数游戏的问题

我是新手&#xff0c;所以请原谅下面的混乱…我正试图写一个数字猜谜游戏。计算机应该随机生成一个介于1到10之间的数字。用户只允许3次尝试正确猜测数字。一个用户要么猜对了&#xff0c;要么尝试完了&#xff0c;我应该让程序问用户&#xff0c;如果他们想再次玩&#xff0c;…

php pc_base,phpcms二次开发之base.php的桥梁作用_PHP教程

PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问&#xff0c;采用单一入口模式进行项目部署和访问&#xff0c;无论访问任何一个模块或者功能&#xff0c;只有一个统一的入口。入口程序是在前期处理用户请求的引导程序。它是唯一一个可以被最终用户可以直接请求运行…

oracle 表访问,向oracle导入访问表

我在将表导入到oracle时遇到问题。当我导入一个字段是例如导入&#xff1a;在访问我已经20&#xff0c;200 和进口到Oracle‘‘中访问和导入oracle作为‘12535’向oracle导入访问表在访问20’或’125.35它被声明作为数字&#xff0c;并在oracle中它已经改为文本&#xff0c;浮动…

oracle中orand使用,Postgres兼容Oracle研究——orafce调研

一、背景PostgreSQL是和Oracle最接近的企业数据库&#xff0c;包括数据类型&#xff0c;功能&#xff0c;架构和语法等几个方面。甚至大多数的日常应用的性能也不会输给Oracle。但是Oracle有些函数或者包&#xff0c;默认PostgreSQL是没有的&#xff0c;需要安装orafce包来实现…

oracle脚本审核平台,Oracle 脚本(适应各种业务需要)

Oracle 脚本(适应各种业务需要)1. 取A表的数据&#xff0c;更新B表字段update m_build bset b.district_id(select d.district_idfrombjhouse.d_district dwhereb.build_name_jqd.district_name)where exists(select 1frombjhouse.d_district dwhereb.build_name_jqd.district…

linux 文件mtime,linux 文件的atime,ctime,mtime查看與修改

查看ls -a默認顯示的是修改時間ls -c / --timestatus / --timectime顯示的是狀態修改時間(即權限修改時間)ls -u / --timeuse / --timeaccess / --timeatime表示的是文件訪問時間修改touch: 缺少了文件操作數請嘗試執行“touch --help”來獲取更多信息。[weilocalhost ~]$ touc…

linux 内核系统优化,Linux系统内核优化(一)

Linux内核参数调整(用于大并发的WEB服务器)cat > /etc/sysctl.conf net.ipv4.tcp_syncookies 1fs.file-max 999999net.ipv4.tcp_tw_reuse 1net.ipv4.tcp_keepalive_time 600net.ipv4.tcp_fin_timeout 30net.ipv4.tcp_max_tw_buckets 5000net.ipv4.ip_local_port_range…

labview linux 内核 不匹配,Linux CentOS7(或Ubuntu)中安装NI-VISA后一打开范例Simple Serial.vi就闪退,LabVIEW就崩溃。...

Linux CentOS7(或Ubuntu)中安装NI-VISA后一打开范例Simple Serial.vi就闪退&#xff0c;LabVIEW就崩溃。我安装了LabVIEW pro 2017 for Linux(另外也试了2016版的都是一样的效果)&#xff0c;VISA也试了4.1.0、4.4.0、5.1.1、15.0.0、15.5.0、16.0.0、17.0.0版本都试过了&#…

linux内核编译的image,内核编译时生成uImage的办法

有一个很简单的办法u-boot编译结束时&#xff0c;会在tool文件夹下面生成一个mkimage文件&#xff0c;将这个文件复制到交叉编译器目录下的bin文件夹下面&#xff0c;以后编译时就会生成uImage文件&#xff0c;省的用命令行的方式转了&#xff1b;另外将采用命令行的方式也贴出…

linux系统平均价格,简单认识Linux系统平均负载

第一次认识“系统平均负载”是在探针中见到的&#xff0c;一直不明白是什么意思&#xff0c;不明白貌似也不影响使用&#xff0c;就在意了。后来与“系统平均负载”接触的更多&#xff0c;无意间看到了一个形象的比喻&#xff0c;算是对“系统平均负载”有一个简单的认识。load…

linux系统怎么删除打印机,解决LINUX ES3.0下想指定打印机和用户的删除打印作业的问题...

################################################################################ xlprm use for LINUX ES3.0# 可删除指定打印机和指定用户的打印作业# 用法 1)xlprm $1 $2 可指定两个参数 参数一是打印机名 参数2是用户名# 2)xlprm $1 可指定一个参数 参数一是打印记名 然…