PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (7): « 1 2 3 4 [5] 6 7 »

> Найдено сообщений: 98
juramaj Отправлено: 04 Февраля, 2015 - 14:58:53 • Тема: вывод страницы cURL • Форум: Вопросы новичков

Ответов: 2
Просмотров: 144
Привет всем форумчанам. Возник такой вопросик. Я вывожу с помощью curl страницу другого сайта у себя на сайте.(код приведен ниже) Подскажите как мне вывести например не всю страницу, а только определенный блок? Где можно об этом почитать. Заранее спасибо.
PHP:
скопировать код в буфер обмена
  1. if( $curl = curl_init() ) {
  2.                 curl_setopt($curl,CURLOPT_URL,'http://mysite.ru/');
  3.                 curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
  4.                 $out = curl_exec($curl);
  5.                 echo $out;
  6.                 curl_close($curl);
  7.             }  
juramaj Отправлено: 04 Февраля, 2015 - 12:43:57 • Тема: autoload в mvc • Форум: Объектно-ориентированное программирование

Ответов: 44
Просмотров: 7520
esterio пишет:
juramaj
надеюсь вы поняли полностю суть автолодинга в ПХП

Кажись понял. Теперь нужно по больше практики чтобы закрепить знания. Спасибо за помощь.
juramaj Отправлено: 04 Февраля, 2015 - 12:21:17 • Тема: autoload в mvc • Форум: Объектно-ориентированное программирование

Ответов: 44
Просмотров: 7520
Не прошло и пол года, но зато разобрался. Всем спасибо за помощь и подсказки. Радость
juramaj Отправлено: 02 Февраля, 2015 - 16:52:00 • Тема: autoload в mvc • Форум: Объектно-ориентированное программирование

Ответов: 44
Просмотров: 7520
esterio пишет:
juramaj пишет:
$controller = new $controller_name;

ок почти поняли, но счас что вот этот код делает

Так я же его закомментировал. Дальше не могу понять, что нужно.
(Добавление)
Как по мне так логика должна выглядеть так:
С URL берем 1-й элемент тоесть это будет у меня контроллер
PHP:
скопировать код в буфер обмена
  1. $controller_name = 'Main';
  2.         $action_name = 'index';
  3.         $routes = explode('/', $_SERVER['REQUEST_URI']);
  4.         if ( !empty($routes[1])){      
  5.             $controller_name = $routes[1];
  6.         }

Потом к этому всему прибавляю
PHP:
скопировать код в буфер обмена
  1. $controller_name = 'application_Controllers_Controller'.$controller_name;

Потом подключается наша ф-ция autoload, и мы делаем следующее
PHP:
скопировать код в буфер обмена
  1. $fileName .= str_replace('_', 'DIRECTORY_SEPARATOR', $className) . '.php';
  2. require $fileName;
  3.  

Вот как то так. Правильно или нет?
juramaj Отправлено: 02 Февраля, 2015 - 16:15:47 • Тема: autoload в mvc • Форум: Объектно-ориентированное программирование

Ответов: 44
Просмотров: 7520
esterio пишет:
juramaj
слово автолоад какбы намекает что запуск происходит автоматически. тоесть если убрать проверку файла и инклуд, то после создания екземпляра класса контролера функция автолодинга запуститься автоматически. в качестве аргумента будет передано название класса (в даном случае контроллера), вот там и стоит подключать файл.

Написал вот так, ничего не сработало. Где ошибка? Не пойму.
PHP:
скопировать код в буфер обмена
  1. class Route
  2. {
  3.     static function start()
  4.     {
  5.         $controller_name = 'Main';
  6.         $action_name = 'index';
  7.         $routes = explode('/', $_SERVER['REQUEST_URI']);
  8.         if ( !empty($routes[1])){      
  9.             $controller_name = $routes[1];
  10.         }
  11.        // if ( !empty($routes[2])){
  12.       //      $action_name = $routes[2];
  13.       //  }
  14.        // $model_name = 'Model'.$controller_name;
  15.         $controller_name = 'Controller'.$controller_name;
  16.       //  $action_name = 'action'.$action_name;
  17.       //  $model_file = strtolower($model_name).'.php';
  18.       //  $model_path = "application/models/".$model_file;
  19.        // if(file_exists($model_path)){
  20.           //  spl_autoload_register(Route::loaderModel);
  21.           //  include "application/models/".$model_file;
  22.       //  }
  23.       //  $controller_file = strtolower($controller_name).'.php';
  24.        // $controller_path = "application/controllers/".$controller_file;
  25.        // if(file_exists($controller_path)){
  26.           //  include "application/controllers/".$controller_file;
  27.        // } else {
  28.        //     Route::ErrorPage404();
  29.        // }  
  30.   //      $controller = new $controller_name;
  31.   //      $action = $action_name;
  32.   //      if(method_exists($controller, $action)){
  33.   //          $controller->$action();
  34.   //      } else {
  35.   //          Route::ErrorPage404();
  36.   //      }
  37.     }
  38. }

И файл autoload.php
PHP:
скопировать код в буфер обмена
  1. function autoload($className)
  2.     {
  3.         $fileName  = '';
  4.         $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
  5.         require $fileName;  
  6.     }
  7.     spl_autoload_register('autoload');
juramaj Отправлено: 02 Февраля, 2015 - 13:14:13 • Тема: autoload в mvc • Форум: Объектно-ориентированное программирование

Ответов: 44
Просмотров: 7520
GoDr пишет:
esterio, да хватит издеваться над всеми Радость

Если файл, который располагается по адресу $controller_path существует
if(file_exists($controller_path)){

То мы закомментированием (отключим) строку где он должен был подключиться
// include "application/controllers/".$controller_file;

Если не существует
} else {

То мы покажем вам 404
Route::ErrorPage404();

Так а как тогда написать сам функцию autoload? Чтобы всё автоматически подгружалось.
juramaj Отправлено: 30 Января, 2015 - 19:20:38 • Тема: autoload в mvc • Форум: Объектно-ориентированное программирование

Ответов: 44
Просмотров: 7520
esterio пишет:
juramaj пишет:
if(file_exists($controller_path)){
// include "application/controllers/".$controller_file;
} else {
Route::ErrorPage404();
}

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

Хорошо, сейчас еще подумаю над этим вопросом. Если что то к вам обращусь с теми вариантами что придут мне в голову.
juramaj Отправлено: 30 Января, 2015 - 17:22:32 • Тема: autoload в mvc • Форум: Объектно-ориентированное программирование

Ответов: 44
Просмотров: 7520
esterio пишет:
смотрте если есть include то мы явно обьявляем класс, значит автозагрузчик не сработает, а если убрать что будет тогда думаю можно догадатся

Вы не можете помочь мне переписать маршрутизатор. Я новичок в mvc и мне бы хоть разок увидеть как это всё реализуется и всё. Вот код:
PHP:
скопировать код в буфер обмена
  1. class Route
  2. {
  3.     static function start()
  4.     {
  5.         $controller_name = 'Main';
  6.         $action_name = 'index';
  7.         $routes = explode('/', $_SERVER['REQUEST_URI']);
  8.         if ( !empty($routes[1])){      
  9.             $controller_name = $routes[1];
  10.         }
  11.         if ( !empty($routes[2])){
  12.             $action_name = $routes[2];
  13.         }
  14.         $model_name = 'Model'.$controller_name;
  15.         $controller_name = 'Controller'.$controller_name;
  16.         $action_name = 'action'.$action_name;
  17.         $model_file = strtolower($model_name).'.php';
  18.         $model_path = "application/models/".$model_file;
  19.         if(file_exists($model_path)){
  20.           //  spl_autoload_register(Route::loaderModel);
  21.           //  include "application/models/".$model_file;
  22.         }
  23.         $controller_file = strtolower($controller_name).'.php';
  24.         $controller_path = "application/controllers/".$controller_file;
  25.         if(file_exists($controller_path)){
  26.          //   include "application/controllers/".$controller_file;
  27.         } else {
  28.             Route::ErrorPage404();
  29.         }  
  30.        $controller = new $controller_name;
  31.         $action = $action_name;
  32.         if(method_exists($controller, $action)){
  33.             $controller->$action();
  34.         } else {
  35.             Route::ErrorPage404();
  36.         }
  37.     }
  38.     static function ErrorPage404()
  39.     {
  40.         echo "<img src='images/404.png' alt='404'>";
  41.     }
  42. }

(Добавление)
esterio пишет:
смотрте если есть include то мы явно обьявляем класс, значит автозагрузчик не сработает, а если убрать что будет тогда думаю можно догадатся

когда я убрал include то меня перебросило на 404
juramaj Отправлено: 30 Января, 2015 - 17:03:13 • Тема: autoload в mvc • Форум: Объектно-ориентированное программирование

Ответов: 44
Просмотров: 7520
[quote=esterio]GoDr
Извините но вы ошибаетесь
1. зачем проверять
[quote=GoDr] if (!class_exists($class_name)) {
require_once(_PATH_ROOT . '/class/' . $class_name . '.php');
}[/quote]
если автолоадер не будет вызван если клас обьявлен
2. пример с довома класамми и со статикой не самый удачный

juramaj
Чтобы не запутивать вас обьясню коротко.[quote]
Теорию то я понял, а вот как оно на практике реализуется именно с моим случаем маршрутизатор? Как избавится от тех include, а чтобы всё автоматически подгружалось не могу понять.
juramaj Отправлено: 30 Января, 2015 - 14:31:53 • Тема: autoload в mvc • Форум: Объектно-ориентированное программирование

Ответов: 44
Просмотров: 7520
esterio пишет:
juramaj пишет:
Как избавится в маршрутизаторе на mvc от include, а вместо этого реализовать функцию autoload для загрузки классов. Вот мой маршрутизатор:

Autoload работает когда создаеться екземпляр класа который не подключен. Далее сами

Мозг взрывается, не могу понять. У меня же в маршрутизаторе берутся переменные с адресной строки, не могу понять как мне их подгрузить(файлы в которых есть эти классы) не используя include. Может хоть намекнёте?
juramaj Отправлено: 30 Января, 2015 - 13:56:45 • Тема: autoload в mvc • Форум: Объектно-ориентированное программирование

Ответов: 44
Просмотров: 7520
Как избавится в маршрутизаторе на mvc от include, а вместо этого реализовать функцию autoload для загрузки классов. Вот мой маршрутизатор:
PHP:
скопировать код в буфер обмена
  1. class Route
  2. {
  3.     static function start()
  4.     {
  5.         $controller_name = 'Main';
  6.         $action_name = 'index';
  7.         $routes = explode('/', $_SERVER['REQUEST_URI']);
  8.         if ( !empty($routes[1])){      
  9.             $controller_name = $routes[1];
  10.         }
  11.         if ( !empty($routes[2])){
  12.             $action_name = $routes[2];
  13.         }
  14.         $model_name = 'Model'.$controller_name;
  15.         $controller_name = 'Controller'.$controller_name;
  16.         $action_name = 'action'.$action_name;
  17.         $model_file = strtolower($model_name).'.php';
  18.         $model_path = "application/models/".$model_file;
  19.         if(file_exists($model_path)){
  20.             include "application/models/".$model_file;
  21.         }
  22.         $controller_file = strtolower($controller_name).'.php';
  23.         $controller_path = "application/controllers/".$controller_file;
  24.         if(file_exists($controller_path)){
  25.             include "application/controllers/".$controller_file;
  26.         } else {
  27.             Route::ErrorPage404();
  28.         }  
  29.        $controller = new $controller_name;
  30.         $action = $action_name;
  31.         if(method_exists($controller, $action)){
  32.             $controller->$action();
  33.         } else {
  34.             Route::ErrorPage404();
  35.         }
  36.     }
  37.     static function ErrorPage404()
  38.     {
  39.         echo "<img src='images/404.png' alt='404'>";
  40.     }
  41. }
juramaj Отправлено: 30 Января, 2015 - 12:39:50 • Тема: autoload в mvc • Форум: Объектно-ориентированное программирование

Ответов: 44
Просмотров: 7520
esterio пишет:
juramaj пишет:
static function ErrorPage404()
{
echo "<img src='images/404.png' alt='404'>";
}


И опять эта статья. Уже в который раз вижу на форуме с ней проблемы в новичков

Так а какое решение этой проблемы? Может подскажите.
juramaj Отправлено: 30 Января, 2015 - 11:30:13 • Тема: autoload в mvc • Форум: Объектно-ориентированное программирование

Ответов: 44
Просмотров: 7520
Спасибо всем за рекомендации. Сейчас буду разбираться.
(Добавление)
caballero пишет:
http://svyatoslav[dot]biz/misc/psr_t[dot][dot][dot]nslation/#_PSR-0

не очень понятно каким боком автолоад к MVC
ему пофиг какая там архитектура

Так у меня же у маршрутизаторе прописано подключение. Вот как у меня выглядит маршрутизатор.
PHP:
скопировать код в буфер обмена
  1. class Route
  2. {
  3.     static function start()
  4.     {
  5.         $controller_name = 'Main';
  6.         $action_name = 'index';
  7.         $routes = explode('/', $_SERVER['REQUEST_URI']);
  8.         if ( !empty($routes[1])){      
  9.             $controller_name = $routes[1];
  10.         }
  11.         if ( !empty($routes[2])){
  12.             $action_name = $routes[2];
  13.         }
  14.         $model_name = 'Model'.$controller_name;
  15.         $controller_name = 'Controller'.$controller_name;
  16.         $action_name = 'action'.$action_name;
  17.         $model_file = strtolower($model_name).'.php';
  18.         $model_path = "application/models/".$model_file;
  19.         if(file_exists($model_path)){
  20.             include "application/models/".$model_file;
  21.         }
  22.         $controller_file = strtolower($controller_name).'.php';
  23.         $controller_path = "application/controllers/".$controller_file;
  24.         if(file_exists($controller_path)){
  25.             include "application/controllers/".$controller_file;
  26.         } else {
  27.             Route::ErrorPage404();
  28.         }
  29.         $controller = new $controller_name;
  30.         $action = $action_name;
  31.         if(method_exists($controller, $action)){
  32.             $controller->$action();
  33.         } else {
  34.             Route::ErrorPage404();
  35.         }
  36.     }
  37.  
  38.     static function ErrorPage404()
  39.     {
  40.         echo "<img src='images/404.png' alt='404'>";
  41.     }
  42. }
juramaj Отправлено: 29 Января, 2015 - 18:55:34 • Тема: autoload в mvc • Форум: Объектно-ориентированное программирование

Ответов: 44
Просмотров: 7520
Доброго времени суток! Подскажите пожалуйста, нет ли у кого примера route в реализации php, чтобы там была реализована функция __autoload. Может есть ссылка на источник где это всё реализовано. Заранее спасибо.
juramaj Отправлено: 20 Января, 2015 - 17:22:42 • Тема: Как обратится переменной в методе • Форум: Объектно-ориентированное программирование

Ответов: 9
Просмотров: 1572
А как мне уже в методе get_menu_page так сказать принять?

Страниц (7): « 1 2 3 4 [5] 6 7 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB