sven_tesla
@sven_tesla
Учу PHP не ругайте

Ошибка при подключении выражения include?

Ребят здравствуйте подскажите пожалуйста почему ругается PHPStorm подчеркивая подключение выражения
5bc5b0a3c9e05117092999.png

и сам сайт выдает ошибку на это выражение
что то о том что include не разрешено
Пробовал загуглить ошибку толком не нашел ничего кроме того что это как то связано с уязвимостью самого include
5bc5b0e4b9548671218803.png

весь код из файла View.php
<?php
namespace MyProject\View;


class View
{
     private $templatesPath;

     public function __construct(string $templatesPath)
     {
          $this->templatesPath = $templatesPath;
     }

     public function renderHtml (string $templateName, array $vars = [])
     {
          extract($vars);

          ob_start();
          include $this->templatesPath . '/' . $templateName;
          $buffer = ob_get_contents();
          ob_end_clean();
          echo $buffer;
     }

}


код из файла контролера
<?php
namespace MyProject\Controllers;

use MyProject\View\View;

class MainController
     {
          private $view;

          public function __construct()
          {
               $this->view = new View(__DIR__ . '/../../../templates');
          }

     public function main()
          {
               $articles = [
                     ['name' => ' Статья 1 ', 'text' => ' Текст статьи 1'],
                    ['name' => ' Статья 1 ', 'text' => ' Текст статьи 2'],
               ];
               include __DIR__ . '/../../../template/main/main.php';
          }
          public function sayHello(string $name)
          {
               $this->view->renderHtml('main/hello.php', ['name' => $name]);
          }

          public function sayBye(string $name)
          {
               echo 'Досвидания, ' . $name;
          }

     }
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
@LemonFox
stateless mind
У вас ошибка в разделители пути.
Вы пытаетесь под виндой использовать linux-разделители.
Для win direstory separator -` \`, для linux - `/`
Используйте константу DIRECTORY_SEPARATOR для путей к файлам
https://php.net/manual/ru/dir.constants.php
Ну и можно использовать realpath()
php.net/manual/ru/function.realpath.php
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы