이 글에서는 주로 Yii의 urlManager 구성 요소를 소개하는데, 이는 특정 참조 값을 가지고 있습니다. 이제 필요한 친구들이 참조할 수 있습니다.
구성 구성 요소에는 주로 다음이 포함됩니다.
지정된 클래스. 누락된 경우 기본 클래스
속성을 사용하세요. 누락된 경우 기본 클래스의 해당 속성을 사용하세요
Yii의 urlManager 구성 요소 구성 컴포넌트에 대한 간단한 이해
urlManager는 클래스인데 왜 컴포넌트라고 부르나요? 지금은 걱정하지 마세요. 구성 요소에 대한 클래스를 지정해야 한다는 점만 알면 됩니다. 지정하지 않으면 구성 요소에 기본 클래스가 없으면 오류가 보고됩니다. 핵심 구성 요소입니다. B를 설치하고 yii 고급 템플릿을 예로 들어 보겠습니다.
Pis: 별도로 지정하지 않는 한 아래 경로는 네임스페이스가 아닌 파일의 특정 경로를 나타냅니다/frontend/web/index.php
,看到
首先,用数组助手类的merge方法递归合并数组,后覆盖前得出最终配置,然后,将配置数据传到Application
的构造方法里,再执行其run方法。跳转到
verdoryiisoftyiiYii의 urlManager 구성 요소 구성webApplication.php
的run方法,它触发了很多事件,具体就不看了,貌似无关~,components相关东西在哪?搜索components
,发现执行了coreComponents方法,其内容是
并没有发现urlManager的默认类,并且各个配置文件都没为urlManager指定class,为什么没报错?因为它调用了父类的coreComponents
方法。-
跳转到
verdoryiisoftyiiYii의 urlManager 구성 요소 구성baseApplication.php
,原来urlManager组件在这里指定了类。我们已经知道是通过
coreComponents
指定核心组件的类了,但它是如何调用这个方法的呢?回头想想,在入口脚本还干了什么?实例化Application
类时,自动调用构造方法!我们发现省略~webApplication
没有覆盖父类的构造方法,即看父类的构造方法 -
跳转到
preInit
方法,在这个预初始化方法里,接受的参数是引用,即这个方法要对$config
数组改造,重点看大概意思是,如果配置文件没有配置某组件或没有为某组件指定类,这个组件就用
coreComponents
指定的类。将$config
变量构造好后,传到Component::__construct($config)
,开始组件的具体内容,就不往下走了。 -
下面看组件属性的配置,跳到
/项目目录/frontend/config/main.php
,我们看到urlManager组件配置被注释掉了,即意味着其使用了urlManager
组件指定类的属性的默认值,具体在vendoryiisoftyiiYii의 urlManager 구성 요소 구성wbeUrlManager.php
。小结一下:组件配置,一指定类(无默认就要在配置文件写明),二配置属性,属性就是类的成员变量
/frontend/web/index.php
를 열고
첫 번째 , Array Helper Class의 병합 메서드를 사용하여 배열을 재귀적으로 병합하고 마지막 배열은 이전 배열을 덮어써서 최종 구성을 가져옵니다. 그런 다음 구성 데이터를
Application의 생성자에 전달합니다.
를 선택한 다음 해당 실행 메서드를 실행합니다. Yii의 urlManager 구성 요소 구성 添加虚拟主机
为了方便,先给前台项目添加虚拟主机,具体看链接
<VirtualHost *:Yii의 urlManager 구성 요소 구성0>DocumentRoot "${INSTALL_DIR}/www/advanced/frontend/web/"ServerName frontend.advanced.com</VirtualHost>
这步不是必须的~
3 各配置作用
以请求Site
控制器的about
动作为例子
-
enablePrettyUrl
:Pis:这个设为false,下面的设置都不起作用
false [默认]:通过入口脚本?r=[模块/]控制器/动作 方式访问。即
http://localhost/advanced/frontend/web/index.php?r=site/about
true:开启美化路由,(注意是仅配置这个为ture,其他不配置,即用默认),通过入口脚本/[模块/]控制器/动作 方式访问。即
http://localhost/advanced/frontend/web/index.php/site/about
showScriptName
:
完成后,才能通过http://frontend.advanced.com/site/about
verdoryiisoftyiiYii의 urlManager 구성 요소 구성webApplication.php
의 실행 메소드로 이동합니다. 많은 이벤트가 발생합니다. 자세한 내용은 살펴보지 않겠습니다~. 컴포넌트
를 검색해 보니 coreComponents 메소드가 실행되었고 그 내용은urlManager의 기본 클래스를 찾을 수 없으며 각 구성 파일에서 urlManager에 대한 클래스를 지정하지 않았습니다. 왜 오류가 발생하지 않았습니까? 보고됐나요? 상위 클래스의
coreComponents
메서드를 호출하기 때문입니다. 🎜🎜🎜🎜 verdoryiisoftyiiYii의 urlManager 구성 요소 구성baseApplication.php
로 이동하세요. urlManager 구성 요소가 여기에서 클래스를 지정하는 것으로 나타났습니다. 
coreComponents
를 통해 지정된다는 것을 알고 있는데 이 메서드를 어떻게 호출합니까? 돌이켜보면, 참가 스크립트에서 또 무엇을 했나요? Application
클래스를 인스턴스화하면 생성자가 자동으로 호출됩니다! ~webApplication 생략
이 상위 클래스의 구성 방법을 다루지 않는다는 것을 발견했습니다. 즉, 상위 클래스의 구성 방법을 살펴보세요🎜🎜
preInit
메소드로 이동합니다. 이 pre에서 -초기화 방법, 허용되는 매개변수는 참조입니다. 즉, 이 방법은 
coreComponents
🎜에 지정된 클래스를 사용합니다. $config
변수를 구성한 후 이를 Component::__construct($config)
에 전달하여 구성 요소의 특정 콘텐츠를 시작하고 더 이상 진행하지 않습니다. 🎜🎜🎜🎜 구성 요소 속성의 구성을 살펴보겠습니다. /Project Directory/frontend/config/main.php
로 이동하면 urlManager 구성 요소 구성이 주석 처리되어 있음을 알 수 있습니다. urlManager 구성 요소는 특히 vendoryiisoftyiiYii의 urlManager 구성 요소 구성wbeUrlManager.php
에서 클래스 속성의 기본값을 지정합니다. 
RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . index.php🎜🎜이 단계는 필요하지 않습니다~🎜🎜🎜3 각 구성 기능🎜🎜은 Site 컨트롤러의
about
Action을 예로 들어🎜🎜🎜🎜enablePrettyUrl
: 🎜🎜🎜Pis: false로 설정하면 다음 설정이 작동하지 않습니다🎜 🎜🎜🎜🎜🎜false [기본값]: 입력 스크립트를 통해?r =[모듈/]컨트롤러/작업 모드 액세스. 즉, http://localhost/advanced/frontend/web/index.php?r=site/about
🎜🎜🎜🎜true: 미화 라우팅을 켭니다. (이것을 true로만 구성하세요. , 기타 항목 없음 구성, 즉 기본값 사용), 항목 스크립트/[모듈/] 컨트롤러/작업 모드를 통해 액세스됩니다. 즉, http://localhost/advanced/frontend/web/index.php/site/about
🎜🎜🎜🎜🎜showScriptName
: 🎜🎜완료 후 http://frontend.advanced.com/site/about
방문🎜true [默认]: 不隐藏入口脚本,即要加入口脚本文件名index.php才能访问到,
http://localhost/advanced/frontend/web/index.php/site/about
-
false:按理解,设为false,应该是
http://localhost/advanced/frontend/web/site/about
即可访问,但发现是apache提示找不到页面,这意味着,apache服务器找不到url请求的文件,按apache理解,
省略~/web/
下没有site
目录,所以,想要实现隐藏入口脚本,还要在/frontend/web/
下添加.htaccess
文件,官方文档介绍,具体步骤如下:RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . index.php
在
.htaccess
添加内容如下,意思是,如果请求的文件或目录找不到,就转到index.php
enableStrictParsing
:
false [默认]:不启用严格解析路由,意思是,如果请求url与所有
rules
规则都不匹配的话,就按照默认的路由处理方式来处理,即按[模块/]控制器/动作,方式去解析url。-
true:设为true后,当请求url与
rules
规则不匹配,就报错。如,通过
http://frontend.advanced.com/site/about
请求,得到Yii框架的报错提示这意味着,请求经过apache的转发,已经找到目的文件(入口脚本),目的文件运行过程中,没有得到期望参数(没传或验证不通过),因此Yii框架抛异常了。
注意与上面apache提示找不到页面区分~
suffix
: 后缀名,如设置为suffix => '.html
,需通过http://frontend.advanced.com/site/about.html
才能访问到
rules
: 规则的配置就很复杂了,下面详讲。
4 rules
配置
-
想访问
Site
的about
动作,要在rules里加'site/about' => 'site/about'
其中,左边称为
pattern
,对应输入的url,右边为route
,对应[模型/]控制器/动作。 -
如果不想为每个动作都加一个规则,可以这样
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
可以这样理解,左边,接收请求url的对应值,对它们作
\w
验证,即必须是字母或数字或下划线,以/site/about
为例,验证通过,赋值给临时变量controller
,action
,右边使用,从而找到Site
控制器的about
动作。 -
同理,模块下的控制器动作也可以这样实现
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',
restful的路由规则,在研究,日后再补~
Yii의 urlManager 구성 요소 구성 Notice
suffix
设了.html
, 下面的rules都会用到,要想不用,需要在规则数组单独声明suffix=> ''
restful路由配置,
pluralize
参数默认为true,假如控制器为UserController
,要通过users
的url才能访问到,设为false的话,就不用加s,通过user
即可访问,如果控制器本来就是UsersController
,不管pluralize
如何配置,都是通过users
访问
相关推荐:
위 내용은 Yii의 urlManager 구성 요소 구성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP는 현대화 프로세스에서 많은 웹 사이트 및 응용 프로그램을 지원하고 프레임 워크를 통해 개발 요구에 적응하기 때문에 여전히 중요합니다. 1.PHP7은 성능을 향상시키고 새로운 기능을 소개합니다. 2. Laravel, Symfony 및 Codeigniter와 같은 현대 프레임 워크는 개발을 단순화하고 코드 품질을 향상시킵니다. 3. 성능 최적화 및 모범 사례는 응용 프로그램 효율성을 더욱 향상시킵니다.

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.

PHP에서는 클론 키워드를 사용하여 객체 사본을 만들고 \ _ \ _ Clone Magic 메소드를 통해 클로닝 동작을 사용자 정의하십시오. 1. 복제 키워드를 사용하여 얕은 사본을 만들어 객체의 속성을 복제하지만 객체의 속성은 아닙니다. 2. \ _ \ _ 클론 방법은 얕은 복사 문제를 피하기 위해 중첩 된 물체를 깊이 복사 할 수 있습니다. 3. 복제의 순환 참조 및 성능 문제를 피하고 클로닝 작업을 최적화하여 효율성을 향상시키기 위해주의를 기울이십시오.

PHP는 웹 개발 및 컨텐츠 관리 시스템에 적합하며 Python은 데이터 과학, 기계 학습 및 자동화 스크립트에 적합합니다. 1.PHP는 빠르고 확장 가능한 웹 사이트 및 응용 프로그램을 구축하는 데 잘 작동하며 WordPress와 같은 CMS에서 일반적으로 사용됩니다. 2. Python은 Numpy 및 Tensorflow와 같은 풍부한 라이브러리를 통해 데이터 과학 및 기계 학습 분야에서 뛰어난 공연을했습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

드림위버 CS6
시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.
