专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

yii框架是什么,yii框架的组成

来源:小易整编  作者:小易  发布时间:2023-03-24 05:39
摘要:yii框架是什么,yii框架的组成 在本篇文章中,我们要分析一下Yii框架的项目都有哪些组成,从源码的角度来分析这个框架是如何运行的,今天这个文章是一个开头~1:创建yii项目在Yii的官方网站上,可以很容易的下载到Yii框架的核心代码,通...

yii框架是什么,yii框架的组成

yii框架是什么,yii框架的组成

 在本篇文章中,我们要分析一下Yii框架的项目都有哪些组成,从源码的角度来分析这个框架是如何运行的,今天这个文章是一个开头~

1:创建yii项目

在Yii的官方网站上,可以很容易的下载到Yii框架的核心代码,通过下面的代码,就可以生成一个Yii框架的项目应用,我们在Yii的同级目录下生成了一个名字叫app的项目。

// 在当前目录下,通过yiic.php创建一个名字为app的项目文件 php YiiRoot/framework/yiic.php app ./

2:项目目录

     我们进入到项目目录下,在mac终端输入tree可以看到本目录下的目录文件夹,具体的目录我已经写在下面了。

|-- assets    ----------------------------js文件|   |-- 745db445|   `-- a8822e8c|-- css          -------------------------- css文件|   |-- bg.gif|   |-- form.css|   |-- ie.css|   |-- main.css|   |-- print.css|   `-- screen.css|-- images     --------------------------------- 图片文件|-- index-test.php|-- index.php ----------------------------------- 项目入口文件|-- protected       ----------------------------- 项目核心目录|   |-- commands    ----------------------------- 脚本目录|   |-- components  ----------------------------- yii组件目录|   |-- config      ----------------------------- 项目配置目录|   |-- controllers -----------------------------  控制器目录|   |-- data         ---------------------------- 数据资源目录|   |-- extensions   ---------------------------- 第三方扩展目录|   |-- lib          ----------------------------  yii框架核心文件|   |-- messages|   |-- migrations|   |-- models       ------------------------------ 数据层目录|   |-- runtime      ------------------------------ 项目运行日志|   |-- tests        ------------------------------ 其他测试目录|   |-- vendor|   |-- views        ------------------------------- 视图层日志|   |-- yiic|   |-- yiic.bat|   `-- yiic.php`-- themes         ---------------------------- 主题目录    `-- classic

3:入口文件

    在入口文件中,我把yii的核心文件放在了protected/lib下面去了,这样,我们就可以引入yii的核心文件yii.php了。

    每一个项目都有一个入口文件index.php,在index.php中,引入了两个文件一个是yii.php的核心文件,一个是main.php的配置文件,引入之后通过Yii::createWebApplication创建一个应用,同时运行这个应用。

<?php// 如果你的php版本比较高,那么需要在入口文件中增加下列两行代码,用来屏蔽一些DEpCATED错误error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE & ~E_DEpCATED);ini_set('display_errors', 'Off');// change the following paths if necessary$yii=dirname(__FILE__).'/protected/lib/yii/framework/yii.php';//echo $yii;$config=dirname(__FILE__).'/protected/config/main.php';// remove the following lines when in production mode//defined('YII_DEBUG') or define('YII_DEBUG',true);// specify how many levels of call stack should be shown in each log messagedefined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);require_once($yii);Yii::createWebApplication($config)->run();

4:配置文件

    Yii框架的配置文件在/app/protected/config中的php文件,这个目录下包括了数据库配置文件,控制台应用配置文件,在实际的项目开发中,开发者也可以自己添加配置文件

/Applications/homework/app/protected/config|-- console.php  ----- 控制台应用配置文件|-- database.php ----- 数据库配置文件|-- main.php     ----- 核心配置文件`-- test.php

database.php数据库配置文件

数据库配置文件返回一个数组,数组中包含连接数据库的基本信息

<?php// This is the database connection configuration.return array(    /*'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',*/// uncomment the following lines to use a MySQL database'class' => 'CDbConnection','connectionString' => 'mysql:host=localhost;dbname=test','emulateppare' => true,'username' => 'root','password' => '','charset' => 'utf8',);

主配置文件main.php

主配置文件同样返回一个数组,数组中有多个key,不同的key对应不同的配置项。

这些配置项都有哪是什么含义?我们会在以后的文章中讲解,这里主要看一下配置项都有哪些

<?php// uncomment the following to define a path alias// Yii::setPathOfAlias('local','path/to/local-folder');// This is the main Web application configuration. Any writable// CWebApplication properties can be configured here.return array(   'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',   'name'=>'My Web Application',   // ploading 'log' component   'pload'=>array('log'),   // autoloading model and component classes   'import'=>array(      'application.models.*',      'application.components.*',   ),   'modules'=>array(      // uncomment the following to enable the Gii tool      /*      'gii'=>array(         'class'=>'system.gii.GiiModule',         'password'=>'Enter Your Password Here',         // If removed, Gii defaults to localhost only. Edit carefully to taste.         'ipFilters'=>array('127.0.0.1','::1'),      ),      */   ),   // application components   'components'=>array(       'urlManager' => array(           'urlFormat' => 'path',            //'enablepttyUrl' => false,            'showScriptName' => false,            'rules' => array(                'users' => 'users/list',                'users/create' => 'users/create',                'users/update' => 'users/update',            ),        ),      'user'=>array(         // enable cookie-based authentication         'allowAutoLogin'=>true,      ),      // uncomment the following to enable URLs in path-format      /*      'urlManager'=>array(         'urlFormat'=>'path',         'rules'=>array(            '<controller:\w+>/<id:\d+>'=>'<controller>/view',            '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',         ),      ),      */      // database settings are configured in database.php      'db'=>require(dirname(__FILE__).'/database.php'),      'errorHandler'=>array(         // use 'site/error' action to display errors         'errorAction'=>YII_DEBUG ? null : 'site/error',      ),      'log'=>array(         'class'=>'CLogRouter',         'routes'=>array(            array(               'class'=>'CFileLogRoute',               'levels'=>'error, warning',            ),            // uncomment the following to show log messages on web pages            /*            array(               'class'=>'CWebLogRoute',            ),            */         ),      ),   ),   // application-level parameters that can be accessed   // using Yii::app()->params['paramName']   'params'=>array(      // this is used in contact page      'adminEmail'=>'webmaster@example.com',   ),);

5:控制器层

    控制器目录:

/Applications/homework/app/protected/controllers.|-- SiteController.php   --- `-- UsersController.php

    控制器类:

    所有的控制器层的文件都是首字母大写,里面的类需要继承Controller类,控制器类中的动作,也就是我们经常说的方法是以action为前缀的,这个没有什么好说,这个都是yii框架自己定义的。

<?phpclass SiteController extends Controller{    public function actions(){}    public function actionIndex(){        $this->render('index');        }}

6:组件层

    组件文件地址

/Applications/homework/app/protected/components.|-- Controller.php|-- UserIdentity.php`-- UsersComponent.php

    组件类

   组件类首字母大写,继承基础类CCompent

<?phpclass UsersComponent extends CComponent{    public static function getUserList(){        $detail = Users::getOneDetail();        $list   = Users::getList();        return array(           "detail" => $detail,            "list"  => $list        );    }    public static function updateUserInfo(){        $ret = Users::updateInfo();        return $ret;    }}

7:数据层

    数据层用于连接数据库,实例表对象,提供基础的查询服务

/Applications/homework/app/protected/models.|-- ContactForm.php|-- LoginForm.php`-- Users.php

    数据类

    数据类需要继承CActiveRecord类,并且需要有几个基础的方法

<?phpclass Users extends CActiveRecord{    public static function model($className=__CLASS__){        return parent::model($className);    }    public function tableName(){        return 'user';    }    public function getDbConnection(){        return Yii::app()->db;    }    public function attributeLabels(){        return array(            'id' => 'id'        );    }    public function search(){    }    public static function updateInfo(){        $con = self::model();        $ret = $con->updateAll(            array("name" => "mamba3"), // column            "id=1"        );        return $ret;    }    public static function getOneDetail(){        $con = self::model();        $data= $con -> find(            array(                'select' => array('id','name','nick_name'),                'order' => 'id DESC',                'condition' => 'id = 1',            )        );        $list = array();        $list[] = array(            'id'        => $data->id,            'name'      => $data->name,            'nick_name' => $data->nick_name,        );        return $list;    }    public static  function getList(){        $con = self::model();        $data = $con -> findAll(            array(                'select' => array('id', 'name', 'nick_name'),                'order' => 'id DESC'            )        );        $list = array();        foreach($data as $item){            $list[] = array(                'id' => $item->id,                'name' => $item->name,                'nick_name' => $item->nick_name,            );        }        return $list;    }}

    我们对Yii框架生成的项目应用进行了目录梳理,在后面的文章中,我们会通过源码分析Yii框架中的一些核心组成,彻底搞懂一款web框架,提升我们的阅读源码的能力。


本文地址:百科问答频道 https://www.neebe.cn/wenda/939252.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科问答
小编:小易整编
相关文章相关阅读
  • 销售额是什么意思?

    销售额是什么意思?

    销售额是指商业企业的一项关键指标,代表企业在一定时期内的营业额,它实时反映企业经营活动的情况,是衡量企业经营能力和效益的重要指标。销售额可以有多种形式,如零售销售额、批发销售额和出口销售额等。销售额的计算方法很简单,即:销售额=销售数量...

  • iTools是什么意思?

    iTools是什么意思?

    iTools是一款功能强大的苹果设备管理工具。它为苹果设备用户提供了便捷的设备管理功能,包括文件传输、备份还原、应用程序管理、屏幕截图、屏幕录制、音乐管理、视频管理等多种功能,而且支持所有的i系列设备,例如iPod、iPhone和iPad...

  • 无损分区工具是什么意思?

    无损分区工具是什么意思?

    无损分区工具是一种硬盘分区方式,是指在分区时保持原有数据不受损坏的一种分区技术,这种分区技术称为“无损分区”。无损分区可以保护硬盘上的数据,在分区时不会破坏硬盘上的任何数据。而且,在数据安全性上也有一定的优势,因为它不会破坏的数据,因此可...

  • 消费凭证是什么意思?

    消费凭证是什么意思?

    消费凭证是指一种书面的证明凭证,当消费者购买商品或服务时,商家会向其提供消费凭证,凭此凭证可以证明消费者购买了特定的商品或服务,以及在这次购买中耗费的钱财数额。消费凭证是一种用于表示购买交易的依据,是为消费者提供全面鉴证的凭证。它可以表明...

  • DSM系统是什么意思?

    DSM系统是什么意思?

    DSM是一种新晋的分布式、可扩展的模块化系统。它是以无服务器、全节点一致性的系统架构为基础,采用多进程系统将服务、运维功能以模块化的方式集合到一起而不会配置服务的的系统设计模型。DSM的核心特点在于采用了一致性的分布式架构,模块化的结构,...

  • 裸金属是什么意思?

    裸金属是什么意思?

    简而言之,裸金属是指被提取出来,没有被添加任何基材的未加工金属。它是将矿石熔化下去后提炼出来的金属,用来做各种活动和企业的原材料。裸金属通常是一种切削或加工的未经热处理的金属。裸金属一般不经过任何表面处理,以自身属性状态出售。它不会涂以油...

  • CVSS是什么意思?

    CVSS是什么意思?

    CVSS(CommonVulnerabilityScoringSystem,中文译名“公共漏洞评分系统”)是一种漏洞分级和评分系统,是由美国国家信息安全标准研究所(NIST)推行的一套机制,它利用特定的参数来构建一个漏洞评级分类体系...

  • 键盘接口是什么意思?

    键盘接口是什么意思?

    键盘接口一般是用于挂接键盘的接口。它也称为键盘插座或键盘接头,它是一个连接键盘和计算机系统之间的重要硬件部件。键盘接口可以用来接收键盘上发出信号,以便在主板上发出完整的指令。键盘接口可以分为有线和无线两种,有线键盘接口是指采用插孔的连接方...

  • 周排行
  • 月排行
  • 年排行

精彩推荐