方法名同类名相同如果没有__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类库项目,一个为测试用 ...
随机推荐
- Linux命令——groups
groups用于查询当前用户的属组,没有参数.
- Docker镜像管理基础篇
Docker镜像管理基础篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Docker Images Docker镜像还有启动容器所需要的文件系统及其内容,因此,其用于创建并启 ...
- moviepy改进的想码
这个要比前一个厚实点. 更改视频亮度,增加字幕,去除音轨,淡入特效,转换,截取时间,控制位置,组合图框,合成多段, 嗯,很多都有了. from django.test import TestCase ...
- SpringBoot启动流程及其原理
Spring Boot.Spring MVC 和 Spring 有什么区别? 分别描述各自的特征: Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等:但他们的 ...
- 《Maven在Java项目开发中的应用》论文笔记(十七)
标题:Maven在Java项目开发中的应用 一.基本信息 时间:2019 来源:山西农业大学 关键词:Maven:Java Web:仓库:开发人员:极限编程; 二.研究内容 1.Maven 基本原理概 ...
- 07. vue-router嵌套路由
嵌套路由用法 1.嵌套路由功能分析 点击父级路由链接显示模板内容 模板内容中又有子级路由链接 点击子级路由链接显示子级模板内容 2.父路由组件模板 父级路由链接 父组件路由填充位 <p> ...
- win10在ip变动之后重启ftp
自己的笔记本拿去公司工作一周后,回到家里发现自己的ftp服务器没办法访问了. 首先,确定自己的ftp服务是打开的 接着搜索internet information service打开 接着点击网站查看 ...
- Ubuntu 14.04.2升级openssh7.9
环境:Ubuntu 14.04.2 目的:openssh版本6.6升级为openssh7.9 准备以下3个包 http://www.zlib.net/ https://www.openssl.org/ ...
- C语言 define实现的宏函数汇总
最大值,最小值 #define MAX( x, y ) ( (x) > (y) ? (x) : (y) )#define MIN( x, y ) ( (x) < (y) ? (x) : ( ...
- 【批处理】if命令,注释方式
If 命令 if 表示将判断是否符合规定的条件,从而决定执行不同的命令. 有三种格式:1.if "参数" == "字符串" 待执行的命令参数如果等于指定的字符串 ...