在我的 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日志,错误会在那里。
我正在使用 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日志,错误会在那里。