以下功能似乎无法正常工作。在函数 load_module 中,我使用PHP中的require()
函数从模块文件夹中获取文件。
我要做的是,检查文件是否在modules文件夹中,如果存在,则运行require_once()
函数。当我尝试使用modules文件夹上的文件时,它工作得很好,那么我所做的就是删除了文件,然后再次尝试它给了我这个错误:
警告:require_once(xxxxxxxxxxxxxxxxxxxxxxx):无法打开流:第4行的D:\ xampp \ htdocs \ projects \ hoplate \ admin \ components \ template.php中没有此类文件或目录
它应该显示此异常错误消息:
有一个错误,似乎moudle不存在于它的位置xxxx
功能load_module
function load_module( $_module_file, $require_once = true ) {
if ( $require_once )
if ( require_once( $_module_file ))
require_once( $_module_file);
else
return "There was an error, It seems that the moudle doesn't exist in it's location $_module_file";
else
if( require( $_module_file ) )
require( $_module_file );
else
return "There was an error, It seems that the moudle doesn't exist in it's location $_module_file";
}
功能get_module
/* Get Modules */
function get_module( $_module_slug ){
load_template( ADMIN_PATH . '/modules/' . $_module_slug . '.php');
}
更多信息
我也尝试使用file_exists()
函数,但它似乎仍无效。
答案 0 :(得分:0)
要求[_once]与include相同,除非失败,它也会产生致命的E_COMPILE_ERROR级错误
您的if检查不仅返回false,还会导致致命错误,导致执行停止,因此它永远不会进入else
您应该使用include
代替(只会导致WARNING
)或file_exists
来检查模块是否存在...因为您自己处理错误没有任何好处使用require
而不是include
。另外,为了更好的练习,我建议抛出异常而不是返回错误字符串。
完整代码:
if ( file_exists( $_module_file ))
include_once( $_module_file );
else
throw new Exception("error...");
或者为了简化事情,如果你忽略了警告级错误
if( !include_once( $_module_file ))
throw new Exception("error...");
答案 1 :(得分:0)
对于其他人遇到同样的问题。这是工作解决方案
<?php
function load_module( $_module_file, $require_once = true ) {
if ( $require_once )
if( !file_exists ( $_module_file ))
echo "<strong>There was an error</strong>, <br/> It seems that the module doesn't exist in it's location <b>$_module_file</b>";
else
require_once( $_module_file );
else
if( !file_exists ( $_module_file ))
echo "<strong>There was an error</strong>, <br/> It seems that the module doesn't exist in it's location <b>$_module_file</b>";
else
require( $_module_file );
}
/* Get Modules */
function get_module( $_module_slug ){
load_module( ADMIN_PATH . '/modules/' . $_module_slug . '.php');
}
?>