4
I am making a Framework using namespaces. However in PDO connection file there is a strange error for me:
Fatal error: Uncaught Exception 'Pdoexception' with message 'could not find driver' in C: xampp htdocs Application Core Controller.php:36 Stack trace: #0 C: xampp htdocs Application Core Controller.php(36): PDO->__Construct('DB_TYPE:host=DB...', 'DB_USER', 'DB_PASS', Array) #1 C: xampp htdocs Application Core Controller.php(20): Application Core Controller->openDatabaseConnection() #2 C: xampp htdocs Public index.php(9): Application Core Controller->__Construct() #3 {main} thrown in C: xampp htdocs Application Core Controller.php on line 36
Index:
<?php
define('ROOT', dirname(__DIR__) . DIRECTORY_SEPARATOR);
require_once 'autoload.php';
use Application\Core\Application;
use Application\Core\Controller;
$controller = new Controller;
Autoload:
function __autoload($class) {
$class = ROOT . str_replace('\\', DIRECTORY_SEPARATOR, $class). '.php';
if(!file_exists($class)) {
    throw new Exception("File path '{$class}' not found.");
} else {
    require $class;
}
}
Controller
<?php
namespace Application\Core;
use PDO;
class Controller
{
/**
 * @var null Database Connection
 */
public $db = null;
/**
 * @var null Model
 */
public $model = null;
/**
 * Whenever controller is created, open a database connection too and load "the model".
 */
function __construct()
{
    $this->openDatabaseConnection();
    $this->loadModel();
    echo 'Loaded Controller <br/>';
}
/**
 * Open the database connection with the credentials from application/config/config.php
 */
private function openDatabaseConnection()
{
    // set the (optional) options of the PDO connection. in this case, we set the fetch mode to
    // "objects", which means all results will be objects, like this: $result->user_name !
    // For example, fetch mode FETCH_ASSOC would return results like this: $result["user_name] !
    // @see http://www.php.net/manual/en/pdostatement.fetch.php
    $options = array(\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_OBJ, \PDO::ATTR_ERRMODE => \PDO::ERRMODE_WARNING);
    // generate a database connection, using the PDO connector
    // @see http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/
    $this->db = new \PDO(DB_TYPE . ':host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=' . DB_CHARSET, DB_USER, DB_PASS, $options);
}
/**
 * Loads the "model".
 * @return object model
 */
public function loadModel()
{
    require APP . 'model/model.php';
    // create new "model" (and pass the database connection)
    $this->model = new Model($this->db);
}
}
						
Line 32 seems to be the variable
$options..., missed the'\'backslash.– Papa Charlie
Or add below namespace, use PDO;
– Williams
I changed the code but now you have another error.
– misakie
No use put "use PDO";
– Hiago Souza