c语言中类的构造函数名与什么相同,方法名同类名相同如果没有__construct,会被当做构造函数。...

本文详细探讨了PHP中类名与函数名重名时的情况,解释了为何会出现两次输出的现象,并通过实例展示了不同组合下的执行结果。内容涵盖了PHP构造函数的历史演变,以及如何在类名与方法名不同时处理调用。此外,还提及了获取当前类名和方法名的PHP内置常量。文章最后讨论了类名和方法名的大小写敏感性问题,以及在Java中如何处理类名和方法名的更改。
摘要由CSDN通过智能技术生成

简介

本文主要罗列些例子,看看当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输出。 下面我们通过例举各种组合,来体验一下效果。

只有一个构造函数

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个方法时

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

构造函数和同名方法各输出一次,不同名方法输出一次

类名与方法名不同时

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

不同名方法输出一次

类名和方法名一致时

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

版权声明:本文为博主原创文章,转载请附上博文链接!

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&colon; 获取当前执行位置的文件名&sol;类名&sol;方法名&sol;行号

在 JAVA 程序有时需要获取当前代码位置, 于是就利用 Thread.currentThread().getStackTrace() 写了下面这个工具类, 用来获取当前执行位置处代码的文件名/类名/ ...

反射的妙用-类名方法名做参数进行方法调用实例demo

首先声明一点,大家都会说反射的效率低下,但是大多数的框架能少了反射吗?当反射能为我们带来代码上的方便就可以用,如有不当之处还望大家指出 1,项目结构图如下所示:一个ClassLb类库项目,一个为测试用 ...

随机推荐

【PRINCE2是什么】PRINCE2认证之七大原则(2)

我们先来回顾一下,PRINCE2七大原则分别是持续的业务验证,经验学习,角色与责任,按阶段管理,例外管理,关注产品,剪裁. 第二个原则:吸取经验教训. PRINCE2要求项目团队吸取以前的经验教训,在 ...

ANDROID开发中注意不同手机CPU架构对SO文件的不同需求。

如果没有对应于手机的SO文件,那么在调用第三方SDK时,会经常发生莫明其妙的错误.所以了解你调式或开发的目的手机CPU架构是很有必要的.

IOS屏幕布局

1.iPad和iPhone的屏幕布局 在IB中,屏幕或控件的尺寸以点为单位.在视网膜技术中,1个点包括4个像素,而没有采用视网膜屏幕技术的还是1个点包括1个像素. 2.绝对布局和相对布局 3.使用Au ...

wget-文件下载工具

阅读目录:详解wget命令-文件下载工具 安装wget 命令格式 命令功能 参数指南 启动参数 记录和输入文件参数 下载参数 目录参数 http选项参数 ftp选项参数 递归下载参数 递归下载中的包含 ...

jmeter(二十六)生成HTML性能测试报告

性能测试工具Jmeter由于其体积小.使用方便.学习成本低等原因,在现在的性能测试过程中,使用率越来越高,但其本身也有一定的缺点,比如提供的测试结果可视化做的很一般. 不过从3.0版本开始,jmete ...

Java IO与网络编程笔记

Java IO&NIO figure:first-child { margin-top: -20px; } #write ol, #write ul ...

Scala中的Implicit详解

Scala中的implicit关键字对于我们初学者像是一个谜一样的存在,一边惊讶于代码的简洁, 一边像在迷宫里打转一样地去找隐式的代码,因此我们团队结合目前的开发工作,将implicit作为一个专题进 ...

python基础复习

复习-基础 一.review-base 其他语言吗和python的对比 c vs Python c语言是python的底层实现,解释器就是由python编写的. c语言开发的程序执行效率高,开发现率低 ...

glob模块--查询一个文件名列表

''' 在python中,glob模块是用来查找匹配的文件的 在查找的条件中,需要用到Unix shell中的匹配规则: * : 匹配所所有 ? : 匹配一个字符 *.* : 匹配如:[hello.t ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值