Zend_Controller_Router_Route_Hostname 과 포트
최근 zend 의 경 로 를 설정 하려 면 2 급 도 메 인 이름 에 따라 권한 을 제어 해 야 합 니 다.그 중 Zend 를 사 용 했 습 니 다.Controller_Router_Route_Hostname 이라는 경로.그리고 루트 체인 을 사 용 했 습 니 다.설정 코드 는 다음 과 같 습 니 다.
routes.hostname.type = "Zend_Controller_Router_Route_Hostname"
routes.hostname.route = ":instance"
routes.hostname.chains.static.route = ":action"
routes.hostname.chains.static.defaults.controller = index
routes.hostname.chains.objects.type = "Zend_Controller_Router_Route_Regex"
routes.hostname.chains.objects.route = "([a-z]+(?:-[a-z]+)?)s(?:/([a-z]+)?)?"
routes.hostname.chains.objects.defaults.action = list
routes.hostname.chains.objects.map.1 = "controller"
routes.hostname.chains.objects.map.2 = "action"
routes.hostname.chains.objects.reverse = "%ss/%s"
routes.hostname.chains.object.type = "Zend_Controller_Router_Route_Regex"
routes.hostname.chains.object.route = "([a-z]+(?:-[a-z]+)?)s/([0-9a-f]{32})(?:/([a-z]+))?"
routes.hostname.chains.object.defaults.action = view
routes.hostname.chains.object.map.1 = "controller"
routes.hostname.chains.object.map.2 = "id"
routes.hostname.chains.object.map.3 = "action"
routes.hostname.chains.object.reverse = "%ss/%s/%s"
routes.hostname.chains.children.type = "Zend_Controller_Router_Route_Regex"
routes.hostname.chains.children.route = "((?:[a-z]+s/[1-9]\d*/)*)([a-z]+(?:-[a-z]+)?)s/([0-9a-f]{32})/([a-z]+(?:-[a-z]+)?)s(?:/([a-z]+))?"
routes.hostname.chains.children.defaults.action = list
routes.hostname.chains.children.map.1 = "ancestors"
routes.hostname.chains.children.map.2 = "parent_cls"
routes.hostname.chains.children.map.3 = "parent_id"
routes.hostname.chains.children.map.4 = "controller"
routes.hostname.chains.children.map.5 = "action"
routes.hostname.chains.children.reverse = "%s%ss/%s/%ss/%s"
프로그램 에서 생 성 된 url 포트 번 호 를 모두 잃 어 버 렸 습 니 다.코드 원본 을 자세히 보 니 ZendController_Router_Route_Chain 의 assemble 방법
public function assemble($data = array(), $reset = false, $encode = false)
{
$value = '';
foreach ($this->_routes as $key => $route) {
if ($key > 0) {
$value .= $this->_separators[$key];
}
$value .= $route->assemble($data, $reset, $encode);
if (method_exists($route, 'getVariables')) {
$variables = $route->getVariables();
foreach ($variables as $variable) {
$data[$variable] = null;
}
}
}
return $value;
}
순환 호출 루트,하지만 ZendController_Router_Route_Hostname 의 match 방법 중
// Get the host and remove unnecessary port information
$host = $request->getHttpHost();
if (preg_match('#:\d+$#', $host, $result) === 1) {
$host = substr($host, 0, -strlen($result[0]));
}
이 단락 은 포트 번 호 를 지 웠 고 ZendController_Router_Route_Chain 에 서 는 이곳 을 되 돌려 주 는 url 과 뒤의 url 을 연결 하여 발생 하 는 url 포트 를 자 연 스 럽 게 잃 어 버 렸 습 니 다.당시 작가 가 왜 이렇게 썼 는 지 다른 이유 가 있 었 기 때 문 일 까?포트 가 있 는 url 을 되 돌려 주 는 것 이 어 떻 습 니까?PHP 에 익숙 한 사람들 에 게 설명 을 해 주 길 바란다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Zend_ControllerZend_Controller_Front 는 플러그 인 에이전트 (plugin broker) 를 스스로 등록 하여 플러그 인 이 촉발 하 는 각종 사건 을 관찰 할 수 있 도록 합 니 다.대부분의 경우 개발 자 들 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.