跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Yii框架
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Yii框架 = '''Yii框架'''(读作“易”)是一个高性能、基于组件的PHP框架,专为开发Web应用程序而设计。它遵循[[MVC]](模型-视图-控制器)架构模式,并提供丰富的工具和功能,帮助开发者快速构建安全、可扩展的应用程序。Yii适用于各种规模的项目,从小型博客到大型企业级系统。 == 核心特性 == Yii框架的主要特点包括: * '''高性能''':Yii采用延迟加载技术,仅加载必要的组件,优化执行速度。 * '''安全性''':内置CSRF防护、XSS过滤、输入验证等安全机制。 * '''扩展性''':通过模块和组件系统轻松扩展功能。 * '''Gii代码生成器''':可视化工具快速生成模型、控制器和CRUD代码。 * '''数据库抽象层''':支持多种数据库系统(MySQL, PostgreSQL, SQLite等)。 * '''RESTful API支持''':简化API开发流程。 == 安装与配置 == === 通过Composer安装 === 推荐使用Composer安装Yii框架: <syntaxhighlight lang="bash"> composer create-project --prefer-dist yiisoft/yii2-app-basic basic </syntaxhighlight> === 目录结构 === 典型的基础应用目录结构: <mermaid> graph TD A[basic/] --> B[assets/] A --> C[commands/] A --> D[config/] A --> E[controllers/] A --> F[models/] A --> G[runtime/] A --> H[vendor/] A --> I[views/] A --> J[web/] </mermaid> == MVC架构实现 == === 创建控制器 === 示例控制器位于<code>controllers/SiteController.php</code>: <syntaxhighlight lang="php"> <?php namespace app\controllers; use yii\web\Controller; class SiteController extends Controller { public function actionIndex() { return $this->render('index'); } public function actionHello($name = 'Guest') { return $this->render('hello', ['name' => $name]); } } </syntaxhighlight> === 创建视图 === 对应视图文件<code>views/site/hello.php</code>: <syntaxhighlight lang="php"> <h1>Hello, <?= htmlspecialchars($name) ?>!</h1> <p>Welcome to your Yii-powered application.</p> </syntaxhighlight> 访问URL:<code>/index.php?r=site/hello&name=John</code> 将显示: {{Code output| Hello, John! Welcome to your Yii-powered application. }} == 数据库操作 == Yii提供强大的ActiveRecord实现。首先配置数据库连接(<code>config/db.php</code>): <syntaxhighlight lang="php"> return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=mydatabase', 'username' => 'root', 'password' => '', 'charset' => 'utf8', ]; </syntaxhighlight> === 创建模型 === 生成用户模型: <syntaxhighlight lang="bash"> ./yii gii/model --tableName=user --modelClass=User </syntaxhighlight> 示例CRUD操作: <syntaxhighlight lang="php"> // 创建记录 $user = new User(); $user->username = 'testuser'; $user->email = 'test@example.com'; $user->save(); // 查询记录 $users = User::find()->where(['status' => 1])->all(); // 更新记录 $user = User::findOne(1); $user->email = 'new@example.com'; $user->save(); // 删除记录 User::findOne(1)->delete(); </syntaxhighlight> == 表单处理 == Yii提供表单构建器和验证系统: <syntaxhighlight lang="php"> <?php use yii\widgets\ActiveForm; use yii\helpers\Html; $form = ActiveForm::begin(); echo $form->field($model, 'username')->textInput(); echo $form->field($model, 'email')->input('email'); echo $form->field($model, 'password')->passwordInput(); echo Html::submitButton('Submit', ['class' => 'btn btn-primary']); ActiveForm::end(); ?> </syntaxhighlight> == 安全特性 == Yii内置多项安全措施: * '''密码哈希''': <syntaxhighlight lang="php"> $hash = Yii::$app->getSecurity()->generatePasswordHash('password'); $valid = Yii::$app->getSecurity()->validatePassword('password', $hash); </syntaxhighlight> * '''数据过滤''': <syntaxhighlight lang="php"> $cleanText = Html::encode($userInput); $cleanHtml = HtmlPurifier::process($userHtml); </syntaxhighlight> == 扩展系统 == Yii扩展可通过Composer安装,例如安装Redis缓存: <syntaxhighlight lang="bash"> composer require yiisoft/yii2-redis </syntaxhighlight> 配置示例: <syntaxhighlight lang="php"> 'components' => [ 'cache' => [ 'class' => 'yii\redis\Cache', 'redis' => [ 'hostname' => 'localhost', 'port' => 6379, 'database' => 0, ] ] ] </syntaxhighlight> == 性能优化 == Yii提供多种优化手段: * '''启用缓存''': <syntaxhighlight lang="php"> // 数据缓存 Yii::$app->cache->set('key', $data, 3600); $data = Yii::$app->cache->get('key'); // 页面缓存 public function behaviors() { return [ [ 'class' => 'yii\filters\PageCache', 'only' => ['index'], 'duration' => 86400, ], ]; } </syntaxhighlight> * '''数据库优化''': <syntaxhighlight lang="php"> // 使用批处理查询 foreach (User::find()->batch(100) as $users) { // 每次处理100条记录 } </syntaxhighlight> == 实际案例:博客系统 == === 功能需求 === * 用户认证系统 * 文章发布与管理 * 分类系统 * 评论功能 === 实现步骤 === 1. 使用Gii生成User、Post、Category、Comment模型 2. 创建控制器处理业务逻辑 3. 设计视图模板 4. 实现RBAC权限管理 核心文章模型关系: <mermaid> erDiagram USER ||--o{ POST : "author" POST ||--o{ COMMENT : has POST }o--|| CATEGORY : "belongs to" </mermaid> == 学习资源 == * 官方文档:https://www.yiiframework.com/doc/guide * Yii社区论坛 * GitHub仓库与问题追踪 == 版本比较 == {| class="wikitable" |- ! 特性 !! Yii 2.0 !! Yii 1.1 |- | PHP版本要求 || 5.4+ || 5.3+ |- | 组件架构 || 基于PSR标准 || 自定义 |- | 性能 || 更高(延迟加载) || 较低 |- | 扩展性 || 更好(Composer支持) || 有限 |} == 最佳实践 == * 遵循MVC职责分离 * 使用Yii代码规范 * 合理利用事件和行为 * 编写单元测试 * 使用Yii调试工具栏开发阶段 == 常见问题 == === 如何自定义错误页面? === 在<code>config/web.php</code>中配置: <syntaxhighlight lang="php"> 'components' => [ 'errorHandler' => [ 'errorAction' => 'site/error', ], ] </syntaxhighlight> === 如何实现URL美化? === 启用URL管理器: <syntaxhighlight lang="php"> 'components' => [ 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ 'post/<id:\d+>' => 'post/view', ], ], ] </syntaxhighlight> Yii框架通过其全面的功能和良好的设计,成为PHP开发者构建现代化Web应用的强大工具。从简单的展示页面到复杂的业务系统,Yii都能提供恰当的支持和优秀的性能表现。 [[Category:编程语言]] [[Category:PHP]] [[Category:PHP框架]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:Code output
(
编辑
)