Php 如何使用require_once()?

Php 如何使用require_once()?,php,require-once,Php,Require Once,我创建了一个包含以下内容的PHP页面: <?php session_start(); ?> <?php require_once(./classes/MaterialUtil.class.php); $mUtil = new MaterialUtil(); ?> 我将MaterialUtil.class.php文件放在D:\xampp\htdocs\drupal\sites\all\themes\zeropoint\classes中,但收到以下错误消息: 解析错误

我创建了一个包含以下内容的PHP页面:

<?php session_start(); ?>
<?php require_once(./classes/MaterialUtil.class.php);
$mUtil = new MaterialUtil(); 
?>

我将MaterialUtil.class.php文件放在D:\xampp\htdocs\drupal\sites\all\themes\zeropoint\classes中,但收到以下错误消息:

解析错误:语法错误,D:\xampp\htdocs\drupal\modules\php\php.module(80):eval()中意外的“.”第7行的代码


您能告诉我我做错了什么吗?

这个错误是因为您没有使用字符串作为文件名,PHP将点理解为连接运算符;因此,因为在操作符之前没有任何值,PHP给您一个错误,说它在错误的位置找到了连接操作符

正如卡拉布罗所说,正确的代码如下:

<?php session_start(); ?>
<?php require_once('./classes/MaterialUtil.class.php');
$mUtil = new MaterialUtil(); 
?>

这是答案中与Drupal没有严格关系的部分

你所做的不是我建议你做的,原因有二:

  • 你把“classes”目录放错地方了。这些文件与正在启用的主题无关,但与正在查看的页面相关。即使您只有一个主题,并且不允许用户为自己选择主题,将这些文件放在主题目录中仍然是错误的。
    如果不小心,将文件放在包含主题的目录中(新版本可用时需要更新)可能会导致您丢失添加的其他文件
  • 通过
    eval()
    执行PHP,例如获取要在节点中显示的内容,这不是您应该做的事情。这是因为:
    • 当您对节点使用PHP过滤器时,该节点将仅对一组受限制的用户可编辑。(我不建议允许不受信任的用户使用PHP作为输入格式)
    • 当您有需要执行的PHP代码时,最好创建一个为站点启用的自定义模块

如果您试图从模块中包含PHP文件,则应使用,而不是marcvangend建议的
require_once()

XAMP服务器不以windows文件系统格式运行。您必须像
localhost/xyz/abc
那样编写文件位置。

首先,您缺少php语法。您必须用引号将路径括起来:
require_once('./classes/MaterialUtil.class.php')
。第二件事是,您的代码不是针对Drupal的。也许你应该从关于Drupal中模块开发的文章开始。我把MaterialUtil.class.php放在D:\xampp\htdocs\Drupal\sites\all\themes\zeropoint\classes中,对吗?如果不正确,你应该把它放在哪里?不幸的是,我看不出你在做什么,在你的例子中Drupal的用法在哪里。如果不引导Drupal,只需将文件的完整路径设置为
/sites/all/themes/zeropoint/classes/MaterialUtil.class.php
我只想知道如何在Drupal中使用require_one。你能帮我吗?@Paul在主题中通常不需要包含类库。对我来说,听起来好像user6919正试图将功能构建到一个主题中,而实际上他应该使用它来包含文件。