在我的 PHP 函数页面的顶部添加命名空间会导致显示完全空白的页面(没有错误)

Adding a namespace to the top of my PHP functions page results in the display of an entirely blank page (with no errors)

我正在使用 PHP 版本 7.3.25.

我已经开始在服务器端试验 PHP 命名空间(尤其是因为我在服务器端使用 ESModules客户端,我完全理解命名空间的优势)但我遇到了第一个障碍 - 这可能是一个明显的菜鸟错误,但没有错误显示很难猜出我犯了什么错误。

我有一个很长的全局函数页面 - 在网站上的每个页面之前都包含在内 - 我在前面加上:

namespace mySetup\myFunctions;

在网站的每个页面上,我都包含了这一长页的全局函数,使用:

include $_SERVER['DOCUMENT_ROOT'].'/my-setup/my-functions.php';

getMyPage();

我现在猜不出出了什么问题,因为结果(每一页)现在是完全空白的页面,没有任何错误。

虽然长页只包含函数(没有类),但我想知道我是否可能需要将函数调用getMyPage();更改为:

\mySetup\myFunctions\getMyPage();

但这也行不通。所以我有点迷茫,甚至无法猜测出什么基本的、低层次的考虑出了问题,或者我错过了什么。

是的,您要么必须在函数前面加上它的命名空间(使用它的完全限定名称),要么在使用 use 语句调用它之前为函数添加别名(通常紧接在命名空间声明之后 - 如果任何 - 或者在文件的开头)。

<?php

use mySetup\myFunctions\getMyPage;

...

include $_SERVER['DOCUMENT_ROOT'].'/my-setup/my-functions.php';

getMyPage();

请注意,use ... 语句本身并不导入函数。它只会为其创建一个短别名,因此您不必使用 FQN。 official documentation 对于学习基础知识非常有用,但您必须记住这种对“导入”关键字的轻微误用。

编辑:命名空间可用于 类 的自动加载(自动导入)(不支持的功能),请查看 spl_autoload_register for the basics, then consider using Composer.

编辑 2:空白页也意味着致命错误,错误报告/显示已关闭。检查PHP日志,错误会在那里。