Table of Contents
You should know the correct usage of require() file inclusion in PHP.
Home Backend Development PHP Tutorial What you should know about the correct usage of require() files in PHP, _PHP Tutorial

What you should know about the correct usage of require() files in PHP, _PHP Tutorial

Jul 13, 2016 am 09:50 AM
require File contains

You should know the correct usage of require() file inclusion in PHP.

When I looked at some PHP framework source codes in the past, it was strange that dirname was used when including files. (__FILE__) to piece together the file path. I don’t know what the benefits of doing this are. Later, I finally discovered the reason.

Let’s look at a simple example:

There are three php files a, b, c. a.php is in the root directory of the website, b.php is in the b folder - b/b.php, and c.php is in the c folder - c/c.php. Some confusion? It’s clear when you look at the picture:

Both a.php and b.php include c.php, and finally c.php includes a php file in the d folder - d/d.php.

Let’s take a look at a.php first:

<&#63;php 
  $file_name = 'a.php';
  echo "this is a.php";
  echo "<hr>";
  require('c/c.php');
 &#63;>
Copy after login

This is a very simple code. After printing, it contains c/c.php. Next, we need to look at c/c.php:

<&#63;php 
  $c_file_name = 'c.php';
  echo 'this is c.php, is required by ' . $file_name;
  echo "<hr>";
  require('../d/d.php');
 &#63;>
Copy after login

Print output "this is c.php, is required by a.php", $file_name is a variable defined in a.php. At the end, d.php is included. Because the d folder is one layer above the current c.php file, according to common sense, we will write the path as "../d/d.php" as a matter of course. But unfortunately, an error will be reported. The reason is that when you include other files in an included file such as c.php, the path is relative to the outermost parent file, that is, relative to a.php, which can be understood as because you are included by me. , so you have to rely on me. It seems very mysterious, but the principle is actually very simple: you can think of require('c/c.php'); as the code in the c/c.php file, so that our a.php can look like this:

<&#63;php 
  $file_name = 'a.php';
  echo "this is a.php";
  echo "<hr>";
  // require('c/c.php');
  $c_file_name = 'c.php';
  echo 'this is c.php, is required by ' . $file_name;
  echo "<hr>";
  require('../d/d.php');
 &#63;>
Copy after login

At this point, you can see that when we want to include the d/d.php file, is the path just now wrong? Because now we are in the a.php code, we are relative to the a.php file, of course, the path should be require('d/d.php'); That's right. We modify the code as follows:

<&#63;php 
  $file_name = 'a.php';

  echo "this is a.php";
  echo "<hr>";

  // require('c/c.php');
  $c_file_name = 'c.php';

  echo 'this is c.php, is required by ' . $file_name;
  echo "<hr>";

  require('d/d.php');
 &#63;>
Copy after login

At this point, you haven’t understood the meaning yet, so you need to look down. Let’s look at b/b.php:

<&#63;php 
  $file_name = 'b.php';
  echo "this is b.php";
  echo "<hr>";
  
  require('../c/c.php');
 &#63;>
Copy after login

No need to explain, there is no problem, but when you replace require('../c/c.php'); with the code in c/c.php, you will find a problem , note that we have just modified the code in c/c.php and changed require('../d/d.php'); to require('d/d.php'); See what is included below Code:

<&#63;php 
  $file_name = 'b.php';
  echo "this is b.php";
  echo "<hr>";
  
  // require('../c/c.php');
  $c_file_name = 'c.php';
  echo 'this is c.php, is required by ' . $file_name;
  echo "<hr>";
  require('d/d.php');
 &#63;>
Copy after login

So, compared to b/b.php, the path of require('d/d.php'); is wrong, it should be require('../d/d.php');. You go back and modify the require path in c/c.php, but it’s wrong. After you modify it, b/b.php can run normally, but a/a.php can’t. Is it true that they share c/c? .php, it affects the whole body, what should I do?

At this time, we return to the dirname(__FILE__) mentioned at the beginning of the article. This is a good thing and can completely solve the above problems. Using it, you don't need to worry about which file contains your file and which path it is under. You don't need to worry about the level of the parent file, because dirname(__FILE__) can specify the path relative to the current file. In other words, we need to change the require path in our c/c.php to:

<&#63;php 
  $c_file_name = 'c.php';

  echo 'this is c.php, is required by ' . $file_name;
  echo "<hr>";

  require(dirname(__FILE__) . '/../d/d.php');
 &#63;>
Copy after login

Here, we only need to use c/c.php as a reference. Compared to it, d/d.php is at the upper level. In this way, there is only one standard, and that is, I shall prevail. Whether you include me or he includes me, I only use myself as the criterion, and the files I want to include are only relative to myself.

For fellow practitioners who don’t understand dirname(__FILE__), please google it, it’s very simple.

Okay, this ends the PHP technology sharing. If you have any questions or errors, please leave a message. By the way, this is my first standard technical blog post. The first article is hydrology, the second article is quasi-technical, and today I finally wrote a technical article, Ou Ye.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1015424.htmlTechArticleYou should know the correct usage of require() files in PHP. When I looked at some PHP framework source codes in the past, It's strange that when the file is included, dirname(__FILE__) is used to piece together the file path...
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 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)

vue3+vite: How to solve the error when using require to dynamically import images in src vue3+vite: How to solve the error when using require to dynamically import images in src May 21, 2023 pm 03:16 PM

vue3+vite:src uses require to dynamically import images and error reports and solutions. vue3+vite dynamically imports multiple images. If vue3 is using typescript development, require will introduce image errors. requireisnotdefined cannot be used like vue2 such as imgUrl:require(' .../assets/test.png') is imported because typescript does not support require, so import is used. Here is how to solve it: use awaitimport

What are the uses of require? What are the uses of require? Nov 27, 2023 am 10:03 AM

Usage of require: 1. Introduce modules: In many programming languages, require is used to introduce external modules or libraries so that the functions they provide can be used in the program. For example, in Ruby, you can use require to load third-party libraries or modules; 2. Import classes or methods: In some programming languages, require is used to import specific classes or methods so that they can be used in the current file; 3. Perform specific tasks: In some programming languages ​​or frameworks, require is used to perform specific tasks or functions.

Steps to solve the fatal error in the php header: require(): Failed opening required 'data/tdk.php' (include_path='.;C:\php\pear') Steps to solve the fatal error in the php header: require(): Failed opening required 'data/tdk.php' (include_path='.;C:\php\pear') Nov 27, 2023 pm 12:51 PM

Steps to resolve fatalerror:require():Failedopeningrequired'data/tdk.php'(include_path='.;C:phppear') in PHP header When developing websites or applications using PHP, we often encounter various errors . One of the common errors is "fatalerror:require():Failed

Detailed explanation of the role and usage of the require keyword in PHP Detailed explanation of the role and usage of the require keyword in PHP Jun 28, 2023 pm 11:31 PM

Detailed explanation of the role and usage of the require keyword in PHP In PHP development, require is a very commonly used keyword. Its function is to include the specified file for use by the current script. This article will explain in detail the function and use of the require keyword. 1. The role of the require keyword The require keyword can include the contents of a file into the current script. It is usually used to include some necessary external files, such as library files, configuration files, etc. Use req

Steps to solve fatal error in php header: require(): Failed opening required 'data/tdk.php' Steps to solve fatal error in php header: require(): Failed opening required 'data/tdk.php' Nov 27, 2023 am 10:41 AM

Steps to resolve FatalError:require():Failedopeningrequired'data/tdk.php' in PHP header When developing and maintaining PHP websites, we often encounter various errors and exceptions. One of the common errors is "FatalError:require():Failedopeningrequired'data/tdk.php'".

C preprocessor? C preprocessor? Aug 27, 2023 pm 02:53 PM

C programming language supports preprocessors for efficient working of programs. The C preprocessor is a macro preprocessor for C-based programming languages. The preprocessor provides the compiler with the ability to include header files, macro expansion, conditional compilation, and line control in an explicit manner. The #hash tag is used to define preprocessors, i.e. all preprocessors start with #. This is followed by the name of the preprocessor without any spaces. Here is a list of C preprocessors. S.No. Preprocessor Description 1. #include includes specific header files from files. 2. #define defines preprocessor macros. 3. #undef Undefines the preprocessor macro 4. #if checks the compile-time condition and evaluates to a True value. 5. #else as a replacement for if preprocessor

How to include one php.ini file within another php.ini file? How to include one php.ini file within another php.ini file? Sep 02, 2023 pm 03:45 PM

Unable to include .ini file in main php,ini file. In contrast, when compiling PHP, the line --with-config-file-scan-dir=PATH​​​​​&a

How to avoid file inclusion vulnerability attacks in PHP language development? How to avoid file inclusion vulnerability attacks in PHP language development? Jun 09, 2023 pm 06:55 PM

With the development and popularization of the Internet, the security of web applications has become the focus of many developers. When it comes to web application security, file inclusion vulnerability attacks are a very important security issue. The vulnerability allows an attacker to manipulate the accessed application's files, which could lead to significant issues such as running malicious code or modifying data. In PHP language development, how to avoid file inclusion vulnerability attacks? The following are some common methods: 1. Set file path restrictions You can avoid file path restrictions by setting file path restrictions.

See all articles