【问题标题】:Class not found in an simple PHP Script在简单的 PHP 脚本中找不到类
【发布时间】:2019-12-30 09:48:04
【问题描述】:

我有一个 Greeting.php

<?php
    namespace sayinghello;
    class Greeting {
        public function getName() {
            return "Hello!";
        }
    }

以及对 sayhello.php 的调用:

<?php
    $greeting = new Greeting();
    echo $greeting->getName();

当我尝试用浏览器打开 sayhello.php 时,会抛出 Class-Not-Found-Exception

('致命错误:未捕获错误:找不到类'sayinghello\Greeting' 在 C:\Users\User\IdeaProjects\EfP\src\sayinghello\sayinghello.php:2 堆栈跟踪:#0 {main} 抛出 C:\Users\User\IdeaProjects\EfP\src\sayinghello\sayinghello.php上线 2

我使用PHP和XAMPP-Stack,类似问题的解决方案没有解决问题...

【问题讨论】:

  • 你包含那个文件了吗?
  • 您是否将Greeting.php 包含在sayinghello.php 中?
  • 是的,include 'Greeting.php';
  • 'Fatal error: .... on line 2的意思是,你还没有写include 'Greeting.php';
  • include_path 的值是多少?你有没有修改它并且Greeting.php 脚本与sayinghello.php 在同一目录中?

标签: php


【解决方案1】:

现在可以了。我需要添加两个语句:

include 'Greeting.php';

use sayinghello\Greeting;

我用 IntelliJ 编程,只熟悉 Java。 Thaugt PHP 将自动在类的命名空间中查找。

【讨论】:

  • 使用 require_once,不包括 ;-)
  • 据我所知,它在 Java 中也不是自动的:您仍然需要 import,无论语句是由 IDE 还是您自己添加。无论如何,如果您使用类自动加载器,PHP 允许某种自动化。
  • 是的,它是必需的。但是Java不需要包含类文件。这只是一种说法,而不是两种说法。这有点令人困惑。
  • 不要弄错那部分。 use 在类加载中没有任何作用,它只是一个捷径定义。您可以完全省略它并使用全名,如$greeting = new sayinghello\Greeting();
猜你喜欢
  • 2013-04-05
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 2012-08-31
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
相关资源
最近更新 更多