【问题标题】:Fatal error: Class 'Connection' not found in D:\Projects\wamp\www\Session-6\classes\header.php on line 4致命错误:第 4 行的 D:\Projects\wamp\www\Session-6\classes\header.php 中找不到类“连接”
【发布时间】:2017-02-20 05:02:46
【问题描述】:

这里我试图将一个类文件包含到另一个类文件中,比如

<?php
include './connection.php';
class header_class  extends connection
{

}

connection.php

<?php

class connection {
    //put your code here
}

这两个文件都在同一个文件夹中,名为classes 现在当我试图在header_class 中扩展connection 类时。 它给出了一个致命错误。

( ! ) Fatal error: Class 'Connection' not found in D:\Projects\wamp\www\Session-6\classes\header.php on line 4
Call Stack
#   Time    Memory  Function    Location
1   0.0004  252240  {main}( )   ..\index.php:0
2   0.0008  267688  include( 'D:\Projects\wamp\www\Session-6\header.php' )  ..\index.php:8
3   0.0010  276552  include_once( 'D:\Projects\wamp\www\Session-6\classes\header.php' ) ..\header.php:2

我很惊讶为什么会发生这种情况..不仅如此,而且当我在与header_class.php 相同的文件中编写connection 类时..Holaa 它正在工作..

请问有人知道为什么会这样吗?

更新: 在这里,我尝试在classes 中创建一个子文件夹,例如tempconnection.php 文件放入其中,然后尝试包含它的工作!!!!!!!!!!!!!!!怎么样???

【问题讨论】:

  • 从你的包含语句中删除 ./ 像这样 include 'connection.php';
  • 不工作..给出与前一个相同的错误

标签: php class inheritance


【解决方案1】:

将此include './connection.php'; 替换为include 'connection.php';
将您的班级名称 connection 替换为 Connection

【讨论】:

  • @kishan 请重新检查您的班级名称。
  • 我尝试但徒劳无功.. 我尝试使用类名作为文件名,就像在 java 中一样,但 php 仍然拒绝包含:(
  • 阅读我的问题中的 更新部分,如果这是问题,那么在这种情况下它也不起作用..但它正在工作
【解决方案2】:

任何包含文件的引用路径都是从您的入口点引用的。在你的情况下,它是index.php

因此,您应该添加classes/connection.php,而不是包含connection.php 以使其工作。

附:如果您关注PSR4,您可以简单地使用composer 来自动加载您的类文件。无需处理包含路径问题。值得学习。

【讨论】:

  • 但我的 index.php 文件包含 header.php 并且 header.php 包含连接 php ..两者(连接和标题)都在同一个目录中。我尝试包含一个 php 很简单到另一个 php..但不能使用 include 语句
  • 您的index.php 不在您的classes/ 文件夹中,这与header.phpconnection.php 不同。对吗?
  • 正如我在回答中所描述的那样。如果您在include 语句中使用相对路径,则该路径将从入口点 (index.php) 路径解析。 header.php 的位置无关紧要,除非您直接调用它。
  • 哦,那我应该怎么做才能包含该相对路径?
  • 您可以使用绝对系统路径(例如include "D:\Projects\wamp\www\Session-6\classes/connection.php")。您可以使用 PHP 的 magic constant 来构建绝对路径(例如 __DIR__),因此它相对于包含语句文件的位置(而不是入口点)。
【解决方案3】:

你可能在“extends connection”中拼错了connection...

确保输入正确,并确保在测试代码之前保存..

【讨论】:

    【解决方案4】:

    终于在谷歌上找到了这个

    include __DIR__. '/connection.php';
    

    它可以工作,但为什么我不需要附加这个 __DIR__. 任何想法?

    【讨论】:

    • __DIR__magic constant。它始终是直接脚本文件的系统路径。如果您从/index.php访问该站点,包括/includes/header.php,然后在header.php中运行echo __DIR__;,您将获得includes文件夹的系统目录。因此,通过在包含路径前加上 __DIR__,它会自动为您构建正确的绝对路径 connection.php,它位于 header.php 的同一文件夹中。
    • 当我手动进入系统目录时我仍然感到惊讶,为什么它被拒绝包含..!!代码现在可以工作了,但我喜欢固执的人..所以我试图找到确切的原因@KoalaYeung
    • 你明白我的回答吗?您认为哪一部分仍然令人困惑?
    • 是@KoalaYeung
    猜你喜欢
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多