Table of Contents
Reply content:
Home Backend Development PHP Tutorial Fatal error: Cannot redeclare

Fatal error: Cannot redeclare

Aug 18, 2016 am 09:16 AM
php

In the php interactive environment, if there is already such a definition:

<code>function a(){
     return 'a';
}
</code>
Copy after login
Copy after login

Now I found that the original writing was wrong and needs to be changed

<code> function a(){
     return 'b';
 }
</code>
Copy after login
Copy after login

An error will be reported at this time, Fatal error: Cannot redeclare

If you define

<code>$b=1;</code>
Copy after login
Copy after login

Modify it again

<code>$b=2;</code>
Copy after login
Copy after login

php will never report an error saying that b has been defined and cannot be redeclare again
Excuse me, what is the reason for designing the function so that it cannot be redeclare?
I read your replies and found that this problem is actually very common. It will cause trouble in debugging. I don’t know how you can solve it in a real project environment.

Qing Let us consider the project scenario. You write a function to complete a function. Generally, you will not write the function perfectly in one go. You need to test it.
We import it, require('myfun.php'), and after using it, we find that we need to modify it. You open myfun.php and make modifications. After saving the modification, you close the last php -a environment and restart php - a, and then import require('myfun.php').
If you do not close (or exit) the php -a environment and import the modified myfun.php again, an error will be reported immediately: Fatal error: Cannot redeclare.

This feature of the PHP language causes trouble in debugging. Do you have any quick methods?

Reply content:

In the php interactive environment, if there is already such a definition:

<code>function a(){
     return 'a';
}
</code>
Copy after login
Copy after login

Now I found that the original writing was wrong and needs to be changed

<code> function a(){
     return 'b';
 }
</code>
Copy after login
Copy after login

An error will be reported at this time, Fatal error: Cannot redeclare

If you define

<code>$b=1;</code>
Copy after login
Copy after login

Modify it again

<code>$b=2;</code>
Copy after login
Copy after login

php will never report an error saying that b has been defined and cannot be redeclare again
Excuse me, what is the reason for designing the function so that it cannot be redeclare?
I read your replies and found that this problem is actually very common. It will cause trouble in debugging. I don’t know how you can solve it in a real project environment.

Qing Let us consider the project scenario. You write a function to complete a function. Generally, you will not write the function perfectly in one go. You need to test it.
We import it, require('myfun.php'), and after using it, we find that we need to modify it. You open myfun.php and make modifications. After saving the modification, you close the last php -a environment and restart php - a, and then import require('myfun.php').
If you do not close (or exit) the php -a environment and import the modified myfun.php again, an error will be reported immediately: Fatal error: Cannot redeclare.

This feature of the PHP language causes trouble in debugging. Do you have any quick methods?

Can you change the format first?

For weakly typed languages, PHP function overloading is not like general OOP.
Because function overloading must meet two conditions:
1. The number of function parameters is different.
2. The types of parameters are different.
PHP cannot satisfy these two points. You can add more parameters to the function, which is equivalent to passing in an extra temporary variable. Weak types are not inherently differentiated, so they cannot be implemented through these.

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

Functions cannot be defined repeatedly -- this is indeed different from js. The function in js is actually a variable, so it can be reassigned. But in PHP, a function is not equivalent to a variable, but a symbol or a constant. Probably because repeated definitions can easily cause misunderstandings, repeated definitions are not allowed.

...This is procedural code, there is no concept of overloading. .
The first method plus
if ( ! function_exists('a')) {

<code>function a(){
     return 'a';
}</code>
Copy after login

}
Then write the introduction of the second method before the first one. It seems like this is the only way

Thanks for the invitation.
I don’t have a more convenient method, mainly because few people use interactive testing, right? It is not troublesome to exit the php -a environment and re-enter...
It is very simple to test and simulate and run it. For example, you can use https://glot.io/

There is really no need to worry about this, and there is no need to worry about whether the language provides overloaded functions from this level

Do you particularly like the php -a shell environment or something else?

There are actually many solutions to this problem. The simplest one is if you find it inconvenient to debug in this environment, then edit an x.php file, and then php Comes to debugging function.

If you really want to use a more advanced debugging method, you can also try xdebug

First of all, most languages ​​do not support method redefinition, and PHP is no exception.

Secondly, your debugging method is really strange. It is the first time I have seen someone use php -a to debug. PHP has various debugging tools, including unit testing. The php -a you used cannot be considered debugging.

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

CakePHP Project Configuration CakePHP Project Configuration Sep 10, 2024 pm 05:25 PM

In this chapter, we will understand the Environment Variables, General Configuration, Database Configuration and Email Configuration in CakePHP.

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

CakePHP Working with Database CakePHP Working with Database Sep 10, 2024 pm 05:25 PM

Working with database in CakePHP is very easy. We will understand the CRUD (Create, Read, Update, Delete) operations in this chapter.

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

To work on file upload we are going to use the form helper. Here, is an example for file upload.

CakePHP Routing CakePHP Routing Sep 10, 2024 pm 05:25 PM

In this chapter, we are going to learn the following topics related to routing ?

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

CakePHP Creating Validators CakePHP Creating Validators Sep 10, 2024 pm 05:26 PM

Validator can be created by adding the following two lines in the controller.

See all articles