名称空间的问题和在PHP中调用未定义的函数

时间:2015-10-30 13:06:38

标签: php namespaces

嗨,每当我去http://localhost/blog/admin/index.php时,我的index.php都有问题我收到错误:致命错误:在C:\ xampp \ htdocs \中调用未定义的函数Blog \ DB \ connect()第6行的blog \ blog.php。在admin文件夹中,我需要我的blog.php。

的index.php

<?php  
 require '../blog.php';
?>

现在在blog.php

<?php

     require 'functions.php';
     require 'db.php';

     $conn = Blog\DB\connect($config);
     if( !$conn )
     {
       die('couldnt connect to the database');
     }

现在在db.php中

<?php namespace Blog\DB;

   require 'config.php';

   function connect($config)
   {    
     try{
          $conn = new \PDO('mysql:host=localhost;dbname=blogs', 
          $config['DB_USERNAME'], 
          $config['DB_PASSWRORD']);
          $conn->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
          return $conn;
         }
     catch(PDOException $e)
     {
         return false;
     }
   } 

2 个答案:

答案 0 :(得分:0)

最终,你需要拥有像这样的全局命名空间

$conn = \Blog\DB\connect($config); // mind the \ before Blog

或者根本没有定义函数(connect())。

答案 1 :(得分:0)

当您调用函数时,您正在调用blog.php中的函数,而不是错误指示的db.php。为了解决这个问题,你必须包括db.php(可能已经包含在 require 中),然后正常调用函数,例如。

include db.php
$conn = connect($config)