2015-08-19 1 views
1

Вот код для моего индексного файла, который находится в корневом каталоге:Тонкий не класс found.I не уверен, что это я здесь делаю неправильно

<?php 
require 'vendor/autoload.php'; 
date_default_timezone_set('Asia/Seoul'); 

//$log = new Monolog\Logger('name'); 
//$log->pushHandler(new Monolog\Handler\StreamHandler('app.txt', Monolog\Logger::WARNING)); 
//$log->addWarning('Oh Noes.'); 

$app = new \Slim\Slim(array(
    'view' => new \Slim\Views\Twig() 
)); 
$app->add(new \Slim\Middleware\SessionCookie()); 

$view = $app->view(); 
$view->parserOptions = array(
    'debug' => true 
); 
$view->parserExtensions = array(
    new \Slim\Views\TwigExtension(), 
); 
//Path To Our View 
$app->view->setTemplatesDirectory("app/view"); 

// Configs for mode "production" 
$app->configureMode('production', function() use ($app) { 
    // Set the configs for production environment 
    $app->config(array(
     'debug' => false, 
     'database' => array(
      'db_host' => 'localhost', 
      'db_port' => '', 
      'db_name' => 'mini', 
      'db_user' => 'root', 
      'db_pass' => 'yaounde' 
     ) 
    )); 
}); 


/******************************************** THE MODEL ********************************************************/ 

// Initialize the model, pass the database configs. $model can now perform all methods from Mini\model\model.php 
$model = new \app\Model\Model($app->config('database')); 

/************************************ THE ROUTES/CONTROLLERS *************************************************/ 

$app->get('/', function() use($app){ 
    $app->render('about.twig'); 
})->name('home'); 

$app->get('/contact', function() use($app){ 
    $app->render('contact.twig'); 
})->name('contact'); 

$app->post('/contact', function() use($app){ 
    $name = $app->request->post('name'); 
    $email = $app->request->post('email'); 
    $msg = $app->request->post('msg'); 

    if(!empty($name) && !empty($email) && !empty($msg)) { 
    $cleanName = filter_var($name, FILTER_SANITIZE_STRING); 
    $cleanEmail = filter_var($email, FILTER_SANITIZE_EMAIL); 
    $cleanMsg = filter_var($msg, FILTER_SANITIZE_STRING); 
    } else { 
    $app->flash('fail', 'All Fields Are Required.'); 
    $app->redirect('contact'); 
    } 

    $transport = Swift_MailTransport::newInstance(); 
    $mailer = \Swift_Mailer::newInstance($transport); 

    $message = \Swift_Message::newInstance(); 
    $message->setSubject('Simple Blog Contact Form Submission'); 
    $message->setFrom(array(
    $cleanEmail => $cleanName 
)); 
    $message->setTo(array('[email protected]')); 
    $message->setBody($cleanMsg); 

    $result = $mailer->send($message); 

    if($result > 0) { 
    $app->flash('success', 'Thanks So Much! You are AWESOME!!!'); 
    $app->redirect('contact'); 

    } else { 
    $app->flash('fail', 'So Sorry, Something Went Wrong. Please Try Again!'); 
    // log that there was an error 
    $app->redirect('/contact'); 
    } 


}); 

$app->run(); 

Тогда у меня есть Model.php в папке app\Model\Model.php

<?php 

namespace app\Model; 

use PDO; 

class Model 
{ 

    function __construct($config) 
    { 

    } 
} 

Я получаю эту ошибку:

Fatal error: Class 'app\Model\Model' not found in E:\xampp\htdocs\aaaaaslim\index.php on line 43

+0

Вы включили 'Model.php'? –

+0

Работы, когда я делаю включение, я думал, что мне не нужно делать никаких других включений, поскольку у меня есть autoload.php –

ответ

5

Вы можете использовать Composer для загрузки собственного пространства имен.

Просто добавьте следующее к вашему composer.json.

"autoload": { 
    "psr-4": { 
     "app\\": "app/" 
    } 
} 

Когда вы делаете обновление композитору, что автозагрузка будет знать ваше пространство имен app и включают в себя классы на лету без вручную их импорта.

+0

Раньше у меня была одна строка в psr-4 для каждой моей папки в папке приложения. (Контроллер , Model, Helper, ...) Используя только одну строку, как вы писали, проблема была решена. – Cedric

 Смежные вопросы

  • Нет связанных вопросов^_^