>  기사  >  백엔드 개발  >  PHP 개발 프레임워크 Yii 프레임워크 튜토리얼(1) 첫 번째 애플리케이션 Hello World

PHP 개발 프레임워크 Yii 프레임워크 튜토리얼(1) 첫 번째 애플리케이션 Hello World

黄舟
黄舟원래의
2017-01-21 09:24:011367검색

Yii Framework 튜토리얼은 공식 중국어 문서에서 찾을 수 있는데, 이 개발 튜토리얼을 작성하는 이유는 무엇입니까? 이 튜토리얼의 목적은 Windows 데스크톱 애플리케이션 또는 ASP.NET 프로그래머가 다양한 관점(주로 C++ 및 C# 프로그래머에서 Windows 애플리케이션을 개발하는 관점을 통해)을 통해 PHPYii Framework 애플리케이션 프레임워크를 빠르게 마스터할 수 있도록 돕는 것입니다. PHP를 사용하여 웹 애플리케이션을 개발할 때 중요한 이점은 일반적으로 Windows 운영 체제에만 적용할 수 있는 Asp.Net과 달리 다양한 운영 체제(Unix, Windows, Mac OS)에 적용할 수 있다는 것입니다. PHP+Apache+MySQL(XMAP/LAMP)을 사용하면 전 세계 거의 모든 무적 플레이어를 물리칠 수 있습니다 :-).

이 튜토리얼에서 사용한 운영체제는 Windows이고, 개발 IDE는 VS.PHP입니다. 이 개발 환경을 사용하는 이유는 VS.PHP는 Visual에 익숙한 IDE로 Visual Studio를 사용하기 때문입니다. 스튜디오 개발자. 또한 C# 및 PHP 애플리케이션을 동시에 개발하고 디버깅하는 데 사용할 수 있습니다. Yii Framework 자체는 IDE와 아무런 관련이 없습니다. 선호하는 PHP 개발 도구를 사용하여 Eclipse와 같은 Yii 애플리케이션을 개발할 수 있습니다. VS.PHP에 대한 소개는 PHP 애플리케이션 개발을 위한 VS.PHP + YiiFramework 조합을 참조하세요. 본 튜토리얼에서 소개하는 Yii Framework에 대한 지식은 IDE 개발과는 아무런 관련이 없으며, 원하는 개발 환경을 선택하여 적용할 수 있습니다.

첫 번째 애플리케이션을 만들기 전에 Yii 개발 패키지를 다운로드해야 합니다. 현재 버전은 1.1.12입니다. 다운로드한 후 편의를 위해 C: 루트 디렉터리에 직접 압축을 풉니다.

PHP 개발 프레임워크 Yii 프레임워크 튜토리얼(1) 첫 번째 애플리케이션 Hello World


VS.PHP를 사용하는 또 다른 이점은 Apache 웹 서버가 함께 제공되므로 별도로 설치할 필요가 없습니다. XAMP(Apache+MySQL+PHP)도 설치할 수 있지만 MySQL을 사용해야 하는 경우에는 MySQL을 별도로 설치해야 합니다.

Yii Framework를 설치한 후 VS.PHP를 사용하여 첫 번째 PHP 애플리케이션인 Hello World를 만듭니다.

PHP 개발 프레임워크 Yii 프레임워크 튜토리얼(1) 첫 번째 애플리케이션 Hello World

VS.PHP HelloWorld 프로젝트를 생성하고 index.php 파일을 추가합니다.

이때 index.php를

<?php  
print "Hello, World!";  
  
?>
<?php  
print "Hello, World!";  
  
?>

로 수정하여 F5를 눌러 프로그램을 실행하면 VS.PHP가 브라우저를 열고 "Hello, World!"를 표시합니다. 응응응! ! ! , 우리는 Yii 웹 애플리케이션 프레임워크를 사용하지 않았습니다. Yii 프레임워크는 순수한 객체 지향 애플리케이션 프레임워크입니다. 웹 프로그램의 Application 클래스는 CWebApplication 클래스입니다. 그리고 MVC 모델을 채택합니다.

위의 구성도는 Yii 애플리케이션의 정적 구조를 보여줍니다

PHP 개발 프레임워크 Yii 프레임워크 튜토리얼(1) 첫 번째 애플리케이션 Hello World

다음 그림은 사용자 요청을 처리할 때 Yii 애플리케이션의 일반적인 워크플로를 보여줍니다

PHP 개발 프레임워크 Yii 프레임워크 튜토리얼(1) 첫 번째 애플리케이션 Hello World

사용자가 URL http://www.example.com/index.php?r=post/show&id=1에 액세스하도록 요청했으며, 웹 서버가 통과했습니다. 입력 스크립트 index.php를 실행하여 이 요청을 처리합니다.

입력 스크립트는 애플리케이션 인스턴스를 생성하고 실행합니다.

애플리케이션은 request라는 애플리케이션 구성 요소에서 사용자 요청의 세부 정보를 얻습니다.

애플리케이션은 urlManager라는 애플리케이션 구성 요소의 도움을 받아 요청된 컨트롤러와 작업을 결정합니다. 이 예에서 컨트롤러는 PostController 클래스를 나타내는 post이고, 액션은 show이며, 실제 의미는 컨트롤러에 의해 결정됩니다.

애플리케이션은 사용자 요청을 추가로 처리하기 위해 요청된 컨트롤러의 인스턴스를 생성합니다. 컨트롤러는 액션 쇼가 컨트롤러 클래스의 actionShow라는 메서드를 가리키는지 결정합니다. 그런 다음 작업(예: 액세스 제어, 벤치마킹)과 관련된 필터를 생성하고 유지 관리합니다. 필터가 허용하는 경우 작업이 실행됩니다.

이 작업은 데이터베이스에서 ID가 1인 Post 모델을 읽습니다.

이 작업은 Post 모델을 통해 show라는 뷰를 렌더링합니다.

뷰는 Post 모델의 속성을 읽고 표시합니다.

뷰는 일부 위젯을 수행합니다.

뷰의 렌더링 결과가 레이아웃에 삽입됩니다.

이 작업은 뷰 렌더링을 완료하고 사용자에게 표시합니다.

Yii 애플리케이션 자체에는 올바른 컨트롤러, 작업이 로그 파일을 사용하는지 여부 등 다양한 구성이 있습니다. Hello, World와 같은 간단한 애플리케이션의 경우 모든 기본값이 사용됩니다. 기본 Controller는 SiteController이고 Action은 indexAction입니다. 즉, 예를 들어 웹사이트가 www.guidebee.com이고 Yii Framework를 사용하는 경우 사용자가 www.guidebee.com을 요청하면 해당 CWebApplication이 실행됩니다. Yii 애플리케이션은 SiteController 클래스 인스턴스를 생성하고 SiteController의 indexAction 메서드(C# 콘솔 애플리케이션의 Program 기본 메서드와 동일)를 호출합니다.

Yii 프로젝트는 Controller, Action, View, Layout 등을 저장하기 위해 다양한 디렉토리를 사용합니다. 기본 디렉토리 구조는 다음과 같습니다

testdrive/
index.php 웹 애플리케이션 항목 스크립트 파일
index-test.php 기능 테스트에 사용되는 항목 스크립트 파일
자산/ 공개 리소스 파일 포함
css/                          CSS 파일 포함 🎜> 이미지/ 이미지 파일 포함
테마/ 애플리케이션 테마 포함
protected/ 보호된 애플리케이션 파일 포함
yiic yiic 명령줄 스크립트
yiic.bat Windows의 yiic 명령줄 스크립트
yiic.php yiic 명령 line PHP 스크립트
Commands/에는 사용자 정의된 'yiic' 명령이 포함되어 있습니다.
shell/에는 사용자 정의된 'yiic shell' 명령이 포함되어 있습니다.
Components/에는 재사용 가능한 사용자 구성 요소가 포함되어 있습니다.
Controller .php 모든 컨트롤러 클래스에 대한 기본 클래스
Identity.php 인증에 사용되는 'Identity' 클래스
config/ 구성 파일 포함
console.php 콘솔 애플리케이션 구성
Main.php 웹 애플리케이션 구성
test.php 기능 테스트에 사용되는 구성
Controllers/ 컨트롤러의 클래스 파일 포함
SiteController.php 기본 컨트롤러의 클래스 파일
data/ 샘플 데이터베이스 포함
Schema.mysql.sql MySQL 데이터베이스 예시
SCHEMA.SQLITE .SQL 예제 SQLite 데이터베이스
Testdrive.db 예제 SQLITE 데이터베이스 파일
EXTENSIONS/ 타사 확장 포함
MESSAGES/ 번역된 메시지 포함
모델/ 포함된 모델 클래스 파일
LoginForm.php 'login ' 작업 양식 모델
ContactForm.php 'contact' 작업 양식 모델
런타임/ 임시 생성된 파일 포함
테스트 /                     테스트 스크립트 포함
views/ 컨트롤러에 대한 보기 및 레이아웃 파일 포함
레이아웃 보기 파일 포함
main.php 모든 보기의 기본 레이아웃
단일 열 페이지에 사용되는 레이아웃 사용
column2.php 이중 사용 열 페이지 레이아웃
사이트/보기 '사이트' 컨트롤러가 포함된 파일
"정적" 페이지가 포함된 페이지
About.php "정보" 페이지
Contact.php 'contact' 작업 보기
            error.php             보기 '오류' 동작(외부 오류 표시)
                 index.php          ''''''''' 동작 ‐ ‐ ‐‐‐‐‐‐‐ 보기, 🎜> 시스템/ 포함 시스템 파일 보기

这个目录结构可以通过Yii自带的工具来创建缺省的文件建立第一个 Yii 应用。

对于Hello World项目来说,没有必要这么复杂,我们只需创建 protected \controllers 目录以存放SiteController.php。

每个Yii应用都有的入口脚本,可以理解为C#的Program类。这个 入口脚本大同小异

<?php  
  
// 包含Yii引导文件  
//require_once(dirname(__FILE__).&#39;/../../framework/yii.php&#39;);  
$yii=&#39;C:/yiiframework/yii.php&#39;;  
// 发布应用时,去掉下面代码避免产生调试信息  
defined(&#39;YII_DEBUG&#39;) or define(&#39;YII_DEBUG&#39;,true);  
  
require_once($yii);  
// 创建一个应用实例并执行  
  
Yii::createWebApplication()->run();
<?php  
  
// 包含Yii引导文件  
//require_once(dirname(__FILE__).&#39;/../../framework/yii.php&#39;);  
$yii=&#39;C:/yiiframework/yii.php&#39;;  
// 发布应用时,去掉下面代码避免产生调试信息  
defined(&#39;YII_DEBUG&#39;) or define(&#39;YII_DEBUG&#39;,true);  
  
require_once($yii);  
// 创建一个应用实例并执行  
  
Yii::createWebApplication()->run();

前面说过Yii的缺省Controller为SiteController,缺省Action为actionIndex, 因此HelloWorld的SiteController代码如下

/** 
 * SiteController is the default controller to handle user requests. 
 */  
class SiteController extends CController  
{  
    /** 
     * Index action is the default action in a controller. 
     */  
    public function actionIndex()  
    {  
        echo &#39;Hello World&#39;;  
    }  
}
/** 
 * SiteController is the default controller to handle user requests. 
 */  
class SiteController extends CController  
{  
    /** 
     * Index action is the default action in a controller. 
     */  
    public function actionIndex()  
    {  
        echo &#39;Hello World&#39;;  
    }  
}

此时再运行应用,可以在浏览器中显示“Hello,World”。 目前没有使用MVC模型直接在Controller 使用echo 打印出“Hello,World”, 下面稍微修改一下代码,创建一个简单的View。

View缺省目录为protected 目录下的views 子目录,和Controller类对于,比如SiteController对应到Views目录下的site子目录,和Asp.Net一样,Yii的View(对应到Asp.Net的Page类)也可以使用MasterPage,Yii应用成为Layout,缺省Layout存放在views的layouts 子目录。

PHP 개발 프레임워크 Yii 프레임워크 튜토리얼(1) 첫 번째 애플리케이션 Hello World

修改SiteController的actionIndex 方法,改为:

public function actionIndex()  
{  
 $this->render("index");  
}
public function actionIndex()  
{  
 $this->render("index");  
}

View 视图是一个包含了主要的用户交互元素的PHP脚本.他可以包含PHP语句,但是我们建议这些语句不要去改变数据模型,且最好能够保持其单纯性(单纯作为视图)。为了实现逻辑和界面分离,大段的逻辑应该被放置于控制器或模型中,而不是视图中,视图有一个名字,当渲染(render)时,名字会被用于识别视图脚本文件。

actionIndex 通过render 方法来显示一个View,对应到views->site 目录下的 index.php 。render 缺省使用views ->layouts 下的 main.php 作为 Layout (布局,MasterPage)

布局是一种用来修饰视图的特殊的视图文件.它通常包含了用户界面中通用的一部分视图.例如:布局可以包含header和footer的部分,然后把内容嵌入其间.

......header here......

......footer here......

其中的 $content 则储存了内容视图的渲染结果.

来看一下View是目录下的index.php (View) 代码:

<?php echo "Hello,World!"; ?>
<?php echo "Hello,World!"; ?>

这样就完成了Hello,World的MVC模型,运行显示“Hello,World”。

PHP 개발 프레임워크 Yii 프레임워크 튜토리얼(1) 첫 번째 애플리케이션 Hello World

以上就是PHP开发框架Yii Framework教程(1) 第一个应用Hello World的内容,更多相关内容请关注PHP中文网(www.php.cn)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.