目录
回复内容:
首页 后端开发 php教程 Fatal error: Cannot redeclare

Fatal error: Cannot redeclare

Aug 18, 2016 am 09:16 AM
php

在php交互环境中,如果已经有这样的定义:

<code>function a(){
     return 'a';
}
</code>
登录后复制
登录后复制

现在我发现原来的写错了,需要改动

<code> function a(){
     return 'b';
 }
</code>
登录后复制
登录后复制

这个时候会报错, Fatal error: Cannot redeclare

如果你定义

<code>$b=1;</code>
登录后复制
登录后复制

再修改一次

<code>$b=2;</code>
登录后复制
登录后复制

php绝不会报错说,b已经被定义了,不可以再次redeclare
请问,把函数设计成不可以redeclare,道理何在?
我看了各位的答复,这个问题实际上是很普遍的,它会带来调试上的麻烦,我不知道各位如何在真实的项目环境中是如何解决的。

清让我们考虑项目场景,你写了一个函数来完成一项功能,一般不会一次就把这个函数写完美了,你需要测试吧。
我们导入它,require('myfun.php'),使用了后,发现要修改,你的打开myfun.php,进行修改,保存修改后,你的关闭上次的php -a环境,重新php -a ,然后再导入require('myfun.php')。
如果不关闭(或者说退出)php -a环境,再次导入修改后的myfun.php,会立即报错:Fatal error: Cannot redeclare。

php语言的这个特性导致调试麻烦,各位有无快捷的方法?

回复内容:

在php交互环境中,如果已经有这样的定义:

<code>function a(){
     return 'a';
}
</code>
登录后复制
登录后复制

现在我发现原来的写错了,需要改动

<code> function a(){
     return 'b';
 }
</code>
登录后复制
登录后复制

这个时候会报错, Fatal error: Cannot redeclare

如果你定义

<code>$b=1;</code>
登录后复制
登录后复制

再修改一次

<code>$b=2;</code>
登录后复制
登录后复制

php绝不会报错说,b已经被定义了,不可以再次redeclare
请问,把函数设计成不可以redeclare,道理何在?
我看了各位的答复,这个问题实际上是很普遍的,它会带来调试上的麻烦,我不知道各位如何在真实的项目环境中是如何解决的。

清让我们考虑项目场景,你写了一个函数来完成一项功能,一般不会一次就把这个函数写完美了,你需要测试吧。
我们导入它,require('myfun.php'),使用了后,发现要修改,你的打开myfun.php,进行修改,保存修改后,你的关闭上次的php -a环境,重新php -a ,然后再导入require('myfun.php')。
如果不关闭(或者说退出)php -a环境,再次导入修改后的myfun.php,会立即报错:Fatal error: Cannot redeclare。

php语言的这个特性导致调试麻烦,各位有无快捷的方法?

能不能改下格式先?

对于弱类型语言来说,PHP函数重载,并不像一般的OOP那样。
因为函数重载必须满足两个条件:
1、函数参数的个数不一样。
2、参数的类型不一样。
这两点,PHP都没有办法满足,您可以对函数多添加参数,只是相当于多传了个临时变量。而弱类型本来就不区分,所以无法通过这些来实现。

http://blog.csdn.net/smartyid...

函数不能重复定义 -- 这点确实和js不一样。 js里面的函数其实就是一个变量,所以可以重新赋值。但是在php中,函数并不是相当于变量,而是一个符号或者一个常量。大概因为重复定义会容易引起误解所以不让重复定义。

...这是过程式的代码 没有重载概念吧。。
第一个方法加上
if ( ! function_exists('a')) {

<code>function a(){
     return 'a';
}</code>
登录后复制

}
然后把第二个方法的引入写在第一个之前,貌似只能这样

谢邀。
我没有更便捷的方法,主要是很少有人用交互方式测试吧?退出php -a环境重新进又不麻烦...
很简单的测试模拟运行一下就行了,比如你可以用 https://glot.io/

这个真的不需要纠结,而且也不用去从这个层面去纠结语言是否给重载函数

你是特别喜欢php -a这个shell环境还是什么?

这种问题解决方案其实很多,最简单的比如你觉得这个环境调试不方便,那就编辑一个x.php文件,然后php x.php就一次性把你修改的代码结果输出了,也就起到了调试作用。

如果真的想用高级一点的debug方法还可以尝试xdebug

首先,绝大部分的语言都不支持的方法重定义,PHP自然也不例外。

其次,你的调试方法真的很奇怪,第一次见人用php -a来调试的,PHP有各种调试工具,也不差单元测试,你使用的php -a都不能算是调试。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1273
29
C# 教程
1252
24
PHP和Python:比较两种流行的编程语言 PHP和Python:比较两种流行的编程语言 Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP:网络开发的关键语言 PHP:网络开发的关键语言 Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP行动:现实世界中的示例和应用程序 PHP行动:现实世界中的示例和应用程序 Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP与Python:了解差异 PHP与Python:了解差异 Apr 11, 2025 am 12:15 AM

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP的持久相关性:它还活着吗? PHP的持久相关性:它还活着吗? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP和Python:代码示例和比较 PHP和Python:代码示例和比较 Apr 15, 2025 am 12:07 AM

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

PHP与其他语言:比较 PHP与其他语言:比较 Apr 13, 2025 am 12:19 AM

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

See all articles