方法名同类名相同如果没有__construct,会被当做构造函数。
简介
本文主要罗列些例子,看看当php类名和函数名重名时,php是如何处理的
例子
<?php
class TestObject
{
public $subject;
private $message = 'test' . PHP_EOL;
public function testObject()
{
echo $this->message;
}
}
$instance = new TestObject();
$instance->testobject();
输出
php test1.php
test
test
原因?
在php4时,构造函数用的是与类同名的函数来进行构造这个动作,且由于类名和方法不区分大小写。 所以在上述例子中,构造函数执行了一个echo, 方法也被执行了一次。故有两个test输出。 下面我们通过例举各种组合,来体验一下效果。
只有一个构造函数
<?php
class TestObject
{
public $subject;
private $message = 'test' . PHP_EOL;
public function testObject()
{
echo $this->message;
}
}
$instance = new TestObject();
//$instance->testobject();
输出
php test2.php
test
一次输出
指定2个方法时
<?php
class Test_Object
{
public $subject = 'subject' . PHP_EOL;
private $message = 'test' . PHP_EOL;
public function test_object()
{
echo $this->message;
}
public function test_subject()
{
echo $this->subject;
}
}
$instance = new Test_Object();
$instance->test_object();
$instance->test_subject();
输出
php test3.php
test
test
subject
构造函数和同名方法各输出一次,不同名方法输出一次
类名与方法名不同时
<?php
class Test_Object
{
public $subject = 'subject' . PHP_EOL;
private $message = 'test' . PHP_EOL;
public function testMessage()
{
echo $this->message;
}
}
$instance = new Test_Object();
$instance->testMessage();
输出
php test4.php
test
不同名方法输出一次
类名和方法名一致时
<?php
class Test_Object
{
public $subject = 'subject' . PHP_EOL;
private $message = 'test' . PHP_EOL;
public function test_object()
{
echo $this->message;
}
}
$instance = new Test_Object();
$instance->test_object();
输出
php test5.php
test
test
构造函数和同名方法各输出一次
---------------------
作者:huuinn
来源:CSDN
原文:https://blog.csdn.net/huuinn/article/details/79294638
版权声明:本文为博主原创文章,转载请附上博文链接!
方法名同类名相同如果没有__construct,会被当做构造函数。的更多相关文章
- php获取当前方法名和类名
php提供的一些系统常量可以完成这些 php获取当前方法名(函数名) __FUNCTION__ php获取当前类名 __CLASS__ 或者 get_class($this); php获取本类所有的方 ...
- Java 中 方法名或类名 变更 同时 更新 所有引用的 类名或方法名 的解决方案
选中 类名,或属性名 Ctrl + 1 然后选择 理新当前文件,还是更新整个工作空间,然后修改对应的类名或方法名 回车即可. 如果.有SVN 版本在控制着,则 会提示,然后把对应的文件 锁定 再 ...
- Eclipse新导入的项目中ctrl+点击指定方法名或类名没有反应,不能跳转问题
项目没有转成java项目 解决方法:右击项目名---选择properties----点击Project Facets,这样就可以实现ctrl+左键点击跳转了. 转成java项目后会报错 解决办法:选中 ...
- php 类名和方法名相同(构造函数)
//php 5.6class father{ public function __construct() { echo __METHOD__; }} class son extends father{ ...
- PHP大小写:函数名和类名不区分,变量名区分
PHP对大小写敏感问题的处理比较乱,写代码时可能偶尔出问题,所以这里总结一下. 但我不是鼓励大家去用这些规则.推荐大家始终坚持“大小写敏感”,遵循统一的代码规范. 1. 变量名区分大小写 <?p ...
- Java学习-024-获取当前类名或方法名二三文
今天,看朋友编写程序,打印日志时,需要记录当前类的类名以及当前方法的方法名,我发现 TA 将类名或者方法名直接写死在了代码中...虽说这样可以实现记录类名和方法名,但是当有特殊情况需要修改类名或者方法 ...
- Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件
Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件 在开发中,我们常常用打印log的方式来调试我们的应用.在Java中我们常常使用方法System.out ...
- Java: 获取当前执行位置的文件名/类名/方法名/行号
在 JAVA 程序有时需要获取当前代码位置, 于是就利用 Thread.currentThread().getStackTrace() 写了下面这个工具类, 用来获取当前执行位置处代码的文件名/类名/ ...
- 反射的妙用-类名方法名做参数进行方法调用实例demo
首先声明一点,大家都会说反射的效率低下,但是大多数的框架能少了反射吗?当反射能为我们带来代码上的方便就可以用,如有不当之处还望大家指出 1,项目结构图如下所示:一个ClassLb类库项目,一个为测试用 ...
随机推荐
- 【书评:Oracle查询优化改写】第三章
[书评:Oracle查询优化改写]第三章 BLOG文档结构图 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 隐含参数 ...
- Linux-firewall防火墙
systemctl status firewalld firewall-cmd --zone=public --list-ports ##查看已开放的端口 2.添加5901端口到白名单 执行 fire ...
- django项目中使用bootstrap插件的分页功能。
官网下载bootstrap插件放到项目中的static文件中 路由 path('blog-fullwidth/', login.fullwidth,name='fullwidth'), 前端页面引入 ...
- python2+robotframework环境搭建
目前robotframework-ride只支持python3,没办法,只能用python2.好吧 python安装不多说,太简单,下载后直接安装,然后配置两个文件路径:path:E:\mytest\ ...
- 项目Alpha冲刺 8
作业描述 课程: 软件工程1916|W(福州大学) 作业要求: 项目Alpha冲刺(团队) 团队名称: 火鸡堂 作业目标: 介绍第8天冲刺的项目进展.问题困难和心得体会 1.团队信息 队名:火鸡堂 队 ...
- python练习题(四)
题目: 根据一个字符串返回一个ip数组,按照ip最后一位排序, 字符串: str = 'ss192.0.0.12?!289.0.0.1!0.0.0.0!192.163.10.28?192.0.0.5' ...
- webview-h5页面刷新
问题:webview 缓存了index.html页面:浏览器缓存了子页面.解决方案:网页链接后添加时间戳. 第一:避免webView缓存]在service.vue中,给url后边添加时间戳 第二:避免 ...
- Django REST framework视图
混合类阶段(封装2次) 路由: url(r'school/$', views.SchoolView.as_view()), url(r'school/(?P<pk>\d+)/$', vie ...
- Java字符串之间拼接时,如果有null值,则会直接拼接上null
package com.fgy.demo; public class demo06 { public static void main(String[] args) { String str1 = & ...
- C# 监控网速
主要有两个类,其一是NetworkAdapter,该类的作用是获取本机网络适配器列表,并且可以通过该类的属性获取当前网速数据:其二是NetworkMonitor,该类是通过.NET的Performan ...