[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: функция array_pad для роутера
CoopeR
Добрый день всем!)
есть кусок кода из роутера:
$parse_url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$explode = explode('/', trim($parse_url, '/\\'));
$url = array_pad($explode, 3, 'index');
var_dump($url);

если каталог то всё правельно работает, например если:
$parse_url = '/qwe/asd/zxc/';
//array(3) { [0]=> string(3) "qwe" [1]=> string(3) "asd" [2]=> string(3) "zxc" }

но если главная страница:
$parse_url = '/';
//array(3) { [0]=> string(0) "" [1]=> string(5) "index" [2]=> string(5) "index" }

почему $url[0] = "", как сделать чтоб был равен "index"

можно конечно так:
//перед строкой с функцией array_pad  вставить:
if($url[0] == "") {
$url[0] = "index"
}
но мне так не нужно, какие есть ещё варианты??

_____________
Нажимаю "Мой компьютер"... не моет, сукоо...
Познакомлюсь с девушкой, можно крякнутая версия...
AllesKlar
Цитата
но мне так не нужно, какие есть ещё варианты??


Именно так тебе и нужно, ты просто не знаешь еще smile.gif

У тебя обязательно должен существовать дефолтный контроллер который будет вызываться, когда обращение к главной странице, а так же если был вызван несуществующий контроллер.
$parse_url = '/несуществующий_контроллер/asd/zxc/';
.....
$url[0] = "index"

_____________
[продано копирайтерам]
CoopeR
Цитата
AllesKlar  Дата 9.01.2014 - 17:57
Именно так тебе и нужно, ты просто не знаешь еще smile.gif

да так и есть я же и хочу с помощью array_pad() всем не существующим ключам дать свой параметр 'index' ))
вопрос в том что если ключ пустой то array_pad() не вставляет туда заданный мной параметр, возможно есть какие нибудь параметры для функции array_pad() которые устраняют это или есть какая либо похожая функция?

class core_router {
public function __construct() {
$parse_url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$url = explode('/', trim($parse_url, '/\\'));
if(substr($parse_url, -1) != ('/') or count($url) > 3) {
new controller_eror('нет слеша или длиный параметр...');
}
$controller = !empty($url[0]) ? strtolower($url[0]) : 'main'; //хотел избавиться
$action = !empty($url[1]) ? strtolower($url[1]) : 'page'; //от этих 3-х строк с array_pad
$param = !empty($url[2]) ? strtolower($url[2]) : null; //но походу лучше оставить как есть
$class = 'controller_'.$controller;

$class = new $class;
if(method_exists($class, $action)) {
call_user_func(array($class, $action), $param);
} elseif(method_exists($class, $controller)) {
call_user_func(array($class, $controller), $action);
} else {
new controller_eror('нет такого класса...');
}
}
}



_____________
Нажимаю "Мой компьютер"... не моет, сукоо...
Познакомлюсь с девушкой, можно крякнутая версия...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.