Integer.valueOf(s)
подобно [1 111]
new Integer(Integer.parseInt(s))
, различие
valueOf()
возвратыInteger
, иparseInt()
возвратыint
(тип примитива). Также обратите внимание, чтоvalueOf()
может возвратить кэшируемыйInteger
экземпляр, который может вызвать запутывающие результаты, где результат==
тесты кажется периодически корректным. Прежде автоупаковка могла быть различием в удобстве после java 1.5, это действительно не имеет значения., Кроме того,
Integer.parseInt(s)
может взять примитивный тип данных также.
Мой ответ основан на ответе Колина.
Когда я поигрался с маршрутами в CodeIgniter, я пришел к выводу, что порядок маршрутов важен. Когда он находит первый действительный маршрут, он не будет выполнять другие маршруты в списке. Если он не найдет никаких действительных маршрутов, он обработает маршрут по умолчанию.
Мои маршруты, с которыми я экспериментировал для моего конкретного проекта, работали следующим образом:
$route['default_controller'] = "main";
$route['main/:any'] = "main";
$route['events/:any'] = "main/events";
$route['search/:any'] = "main/search";
$route['events'] = "main/events";
$route['search'] = "main/search";
$route[':any'] = "main";
Если я ввел " http: // localhost /index.php/search/1234/4321 "Он будет перенаправлен на main / search, и я могу затем использовать $ this-> uri-> segment (2);
для получения ] 1234
.
В вашем сценарии я бы попробовал (порядок очень важен):
$route['products/:any/:any'] = "products/getProductByName";
$route['products/:any'] = "products/getCategoryByName";
Я не знаю достаточно, чтобы маршрутизировать так, как вы хотели ( products / $ 1 / getProductByName / $ 2
), но я' Я не уверен, как бы вы создали контроллер для обработки этой конкретной формы URI. Используя операторы $ this-> uri-> segment (n);
, упомянутые Колином в вашем контроллере, вы сможете делать то, что хотите.
Вы должны использовать URI-класс для извлечения сегментов «documentpen» и «rc805» из вашего URL-адреса. Затем вы можете использовать эти значения в любых нужных вам функциях.
Например, если ваш URL-адрес www.yoursite.com/products/docupen/rc805, вы должны использовать следующее в контроллере продуктов для извлечения сегментов и их назначения в переменные:
$category = $this->uri->segment(2); //docupen
$product = $this->uri->segment(3); //rc805
Затем вы можете использовать $ category и $ product по мере необходимости.
Маршруты CodeIgniter не работают с регулярным выражением. Их поддерживают, а я никогда не смогу заставить их работать. Было бы намного проще поймать их вот так
$route['products/(:any)'] = "products/getCategoryByName/$1";
$route['products/(:any)/(:any)'] = "products/$1/getProductByName/$2";