当前位置: 首页 > news >正文

网站登陆页面怎么做做电影网站投资多少钱

网站登陆页面怎么做,做电影网站投资多少钱,介绍学校网站怎么做,网站的静态页面谁做目录一、主流 PHP 框架介绍1.1 Laravel1.2 ThinkPHP1.3 Yii1.4 框架的优势二、框架基本使用#xff08;以 Laravel 为例#xff09;2.1 框架的安装与配置2.2 路由定义、控制器创建、视图渲染2.3 数据库操作#xff08;ORM 的使用#xff09;三、小型项目实战3.1 项目需求分… 目录一、主流 PHP 框架介绍1.1 Laravel1.2 ThinkPHP1.3 Yii1.4 框架的优势二、框架基本使用以 Laravel 为例2.1 框架的安装与配置2.2 路由定义、控制器创建、视图渲染2.3 数据库操作ORM 的使用三、小型项目实战3.1 项目需求分析与架构设计3.2 基于框架实现项目功能3.3 项目测试与部署一、主流 PHP 框架介绍 在 PHP 开发领域框架的选择对于项目的成功起着至关重要的作用。不同的 PHP 框架具有各自独特的特点和适用场景下面将介绍几款主流的 PHP 框架及其优势。 1.1 Laravel Laravel 是一款具有现代化设计理念的 PHP 框架自 2011 年发布以来凭借其优雅的语法和丰富的功能迅速在开发者社区中获得了广泛的认可和应用。许多知名企业如 Netflix、BBC 和 Coursera 等都在其项目中使用了 Laravel 框架 足以证明其在大型项目开发中的可靠性和强大能力。 它遵循 MVCModel-View-Controller架构模式这种模式将应用程序的逻辑、数据和展示层进行了清晰的分离。以一个电商项目为例模型层负责处理商品数据的存储和读取如从数据库中查询商品信息视图层负责展示商品的详情页面包括商品图片、描述、价格等信息供用户浏览控制器层则负责接收用户的请求比如用户点击查看某一商品详情控制器会调用模型获取相应商品数据并将数据传递给视图进行展示。这种清晰的职责划分使得代码的维护和扩展变得更加容易团队协作开发时不同的开发人员可以专注于各自负责的层提高开发效率。 Laravel 提供了强大的路由功能允许开发者使用简洁且富有表现力的语法来定义路由规则。通过定义路由开发者可以将不同的 URL 请求映射到相应的控制器方法上。比如定义一个路由Route::get(‘user/{id}’, ‘UserControllershow’)这表示当用户通过 GET 请求访问/user/{id}其中{id}是动态参数代表用户的 ID时会调用UserController控制器中的show方法该方法负责获取并返回对应用户的详细信息。这样的路由定义方式使得 URL 结构更加清晰、易于管理同时也有利于提高应用的安全性和可维护性。 Eloquent 是 Laravel 内置的强大的对象关系映射ORM工具它极大地简化了数据库交互操作。通过 Eloquent开发者可以使用面向对象的方式来操作数据库而无需编写复杂的 SQL 语句。例如要获取所有用户数据只需使用$users User::all();这一行代码即可这里User是定义的模型类它对应数据库中的用户表。Eloquent 还支持各种复杂的数据库操作如关联查询。假设用户和订单之间存在一对多的关系一个用户可以有多个订单通过 Eloquent 可以轻松实现查询某个用户的所有订单代码如下$user User::find($id); $orders $user-orders;这种直观、优雅的语法使得数据库操作变得更加高效和便捷减少了出错的可能性。 Blade 是 Laravel 的轻量级模板引擎为开发者编写 HTML 模板提供了简洁直观的语法。在 Blade 模板中可以使用简洁的指令来实现循环、条件判断等逻辑。例如使用foreach ($users as $user)指令可以遍历用户列表if ($user-is_admin)指令可以根据用户是否为管理员进行条件判断并在模板中展示不同的内容。Blade 还支持模板继承通过定义父模板和子模板可以减少重复代码提高模板的可维护性。比如在一个多页面的应用中将页面的公共部分如头部导航栏、底部版权信息等定义在父模板中子模板只需继承父模板并填充自己特有的内容即可。 Artisan 是 Laravel 提供的强大的命令行界面CLI工具它包含了一组丰富的命令可用于执行各种常见的开发任务。例如使用php artisan make:controller UserController命令可以快速创建一个名为UserController的控制器文件文件中包含了默认的方法结构开发者只需在这些方法中添加具体的业务逻辑即可使用php artisan migrate命令可以执行数据库迁移操作将定义好的数据库表结构和变更应用到实际的数据库中方便管理数据库模式的演进还可以使用php artisan db:seed命令填充数据库的初始测试数据为开发和测试提供便利。 基于以上众多优势Laravel 非常适合用于开发大型的、功能复杂且对代码质量和可维护性要求较高的 Web 应用程序如电子商务平台、企业级管理系统、内容管理系统CMS等。其丰富的功能和优雅的设计能够帮助开发者高效地构建出高质量的应用。 1.2 ThinkPHP ThinkPHP 是一款在国内广受欢迎的 PHP 框架它借鉴了 Java 的开发思想融合了 PHP 语言的特点为 PHP 开发者提供了一种高效、简洁的开发方式。许多国内的企业网站、电商系统以及内容管理系统CMS等项目都选择了 ThinkPHP 作为开发框架其在国内 PHP 开发领域占据着重要的地位。 该框架同样基于 MVC 架构模式将模型、视图和控制器进行了明确的划分。在一个企业网站项目中模型层负责与数据库中的企业信息表、新闻表等进行交互获取企业介绍、新闻动态等数据视图层负责将这些数据以美观的页面形式展示给用户包括首页、新闻详情页等控制器层则负责接收用户的请求如用户点击查看新闻详情控制器会调用相应的模型获取新闻数据并将数据传递给视图进行展示。这种架构模式使得代码结构清晰易于理解和维护。 ThinkPHP 拥有丰富的中文文档这对于国内的开发者来说是一个极大的优势。无论是初学者还是有经验的开发者在使用 ThinkPHP 过程中遇到问题时都可以通过查阅详细的中文文档快速找到解决方案。文档中涵盖了从框架的安装、配置到各种功能的使用方法以及常见问题的解答等内容为开发者提供了全方位的支持。例如在进行数据库操作时文档中详细介绍了如何配置数据库连接信息如何使用模型进行数据的增删改查操作等使得开发者能够快速上手。 它提供了强大的路由功能支持多种路由模式包括普通路由、RESTful 路由等。开发者可以根据项目的需求灵活定义路由规则实现对 URL 的精细控制。比如定义一个普通路由Route::get(‘news/:id’, ‘NewsControllerdetail’)表示当用户通过 GET 请求访问/news/{id}{id}为新闻的 ID时会调用NewsController控制器的detail方法获取并展示对应的新闻详情。通过合理配置路由可以使 URL 更加简洁、友好提高用户体验同时也有利于搜索引擎优化SEO。 ThinkPHP 内置的模板引擎功能强大支持模板继承、布局、自定义标签等特性。在一个多页面的应用中可以定义一个基础模板包含页面的公共布局如头部、底部、导航栏等其他页面模板通过继承基础模板只需填充自己的内容部分即可减少了重复代码的编写。同时开发者还可以根据项目需求自定义模板标签实现更灵活的页面展示逻辑。例如自定义一个{user_info}标签用于在页面中展示当前用户的信息方便在多个页面中复用该功能。 自动验证是 ThinkPHP 的一个重要特性它可以帮助开发者方便地对用户输入的数据进行验证。在模型中开发者可以定义一系列的验证规则如用户名不能为空、密码长度不能小于 6 位、邮箱格式必须正确等。当用户提交数据时框架会自动根据定义的规则对数据进行验证如果数据不符合规则会返回相应的错误提示信息避免了无效数据进入数据库保证了数据的完整性和准确性。 基于以上特点ThinkPHP 特别适合用于开发国内的中小型项目尤其是对开发效率要求较高且开发者对中文文档依赖较大的项目。其简洁易用的特性能够帮助开发者快速搭建项目实现业务功能。 1.3 Yii Yii 是一款高性能的 PHP 框架它以其卓越的性能和丰富的功能在 PHP 开发领域中备受瞩目。许多大型的企业级应用、门户网站、社区以及电子商务项目等都选择了 Yii 作为开发框架如一些知名的电商平台、社交网络平台等其在处理高并发、复杂业务逻辑方面表现出色。 Yii 遵循 MVC 架构模式通过将应用程序划分为模型、视图和控制器三个部分实现了业务逻辑、数据展示和用户交互的分离。在一个大型电商项目中模型层负责处理商品、订单、用户等数据的存储和读取与数据库进行交互视图层负责展示商品列表、购物车、订单详情等页面为用户提供良好的购物体验控制器层则负责接收用户的各种操作请求如添加商品到购物车、提交订单等并协调模型和视图进行相应的处理。这种清晰的架构使得代码的维护和扩展变得更加容易能够满足大型项目对代码结构和可维护性的高要求。 该框架是一个全栈框架提供了丰富的、开箱即用的组件和工具涵盖了从数据库交互到用户界面展示的各个方面。在数据库操作方面Yii 提供了强大的查询生成器和 ActiveRecord 模式允许开发者使用面向对象的方式进行数据库操作同时支持多种数据库系统包括 MySQL、PostgreSQL 等。例如使用 ActiveRecord 模式可以轻松实现对数据库表的增删改查操作如$user new User(); $user-name ‘John’; $user-save();这几行代码就可以将一个新用户保存到数据库中。在缓存方面Yii 支持多层缓存包括文件缓存、数据库缓存、Memcached 缓存等能够有效提升应用程序的性能减少数据库的负载。在安全验证方面Yii 提供了完善的安全机制包括输入过滤、输出转义、表单令牌等防止常见的 Web 攻击如 SQL 注入、XSS 攻击等保障应用程序的安全运行。 Gii 是 Yii 提供的一个强大的代码生成器工具它可以根据数据库表结构或其他配置信息自动生成模型、控制器、视图等代码。在开发一个新的模块时使用 Gii 可以大大减少手动编写代码的工作量提高开发效率。例如只需在 Gii 中配置好数据库连接信息和表名就可以一键生成对应的模型类模型类中已经包含了基本的数据库操作方法开发者只需根据实际需求进行少量的修改和扩展即可。 Yii 的扩展架构非常强大开发者可以方便地使用第三方扩展或自行开发扩展来增强框架的功能。Yii 官方的扩展仓库中提供了大量的扩展涵盖了各种功能领域如支付接口集成、社交媒体登录、文件上传等。例如要在项目中集成微信支付功能只需在扩展仓库中找到相关的微信支付扩展按照说明进行安装和配置就可以快速实现微信支付功能无需从头开始编写复杂的支付接口代码。 由于其高性能、丰富的功能和强大的扩展性Yii 非常适合用于开发大型的、对性能和功能要求较高的 Web 应用程序尤其是那些需要处理大量数据和高并发请求的项目。其灵活的架构和丰富的工具能够帮助开发者高效地构建出稳定、可靠的应用。 1.4 框架的优势 MVC 模式MVCModel-View-Controller模式是众多 PHP 框架遵循的架构模式它将应用程序分为模型、视图和控制器三个部分。模型负责处理数据和业务逻辑比如在一个博客系统中模型负责与数据库交互获取文章数据、保存用户评论等视图负责数据的展示将模型提供的数据以 HTML 页面的形式呈现给用户如展示文章详情页面控制器则作为桥梁接收用户的请求根据请求调用相应的模型和视图例如用户点击查看一篇文章控制器接收这个请求调用模型获取文章数据再将数据传递给视图进行展示。这种模式使得代码结构清晰职责分明各个部分之间的耦合度降低提高了代码的可维护性和可扩展性。当需要修改业务逻辑时只需在模型层进行修改而不会影响到视图和控制器当需要调整页面展示效果时只需要在视图层进行修改不会影响到数据处理和业务逻辑。路由路由功能是框架中用于管理 URL 请求的重要部分。通过路由开发者可以将不同的 URL 映射到相应的控制器方法上。在一个电商应用中用户访问/product/list可能会被路由到ProductController的list方法该方法负责获取商品列表数据并返回给用户用户访问/order/detail/{id}{id}为订单 ID可能会被路由到OrderController的detail方法用于获取并展示指定订单的详细信息。合理的路由设计可以使 URL 更加简洁、易读方便用户记忆和使用同时也有利于提高应用的安全性和可维护性。通过定义不同的路由规则还可以实现对不同用户角色的访问控制比如只有管理员才能访问/admin/user/list这样的 URL获取用户管理相关的页面。ORM对象关系映射ORM是一种将对象模型与关系数据库进行映射的技术它允许开发者使用面向对象的方式来操作数据库而无需编写大量的 SQL 语句。以 Laravel 的 Eloquent ORM 为例在一个用户管理系统中定义一个User模型类通过这个模型类可以轻松实现对用户表的操作。例如使用$user User::find(1)可以获取 ID 为 1 的用户信息使用$user-name ‘New Name’; $user-save()可以更新该用户的姓名并保存到数据库中。ORM 不仅简化了数据库操作提高了开发效率还使得代码更加易读和维护同时也提高了代码的可移植性因为可以通过切换 ORM 的配置来适应不同的数据库系统而无需大量修改业务逻辑代码。 二、框架基本使用以 Laravel 为例 接下来我们以 Laravel 框架为例详细介绍 PHP 框架的基本使用方法。 2.1 框架的安装与配置 在开始使用 Laravel 框架之前首先需要确保你的开发环境中已经安装了 PHP 和 Composer。PHP 是 Laravel 运行的基础而 Composer 是 PHP 的依赖管理工具用于安装和管理 Laravel 及其相关依赖。 安装 Laravel 框架可以通过 Composer 命令来完成。打开命令行终端进入你希望创建项目的目录然后执行以下命令 composer create-project laravel/laravel my_project --prefer-dist在这个命令中my_project是你为项目指定的名称你可以根据实际需求进行修改。–prefer-dist选项表示优先从 dist分发源下载依赖包这样可以加快下载速度。执行该命令后Composer 会自动下载 Laravel 框架及其所有依赖项并在指定目录下创建一个新的 Laravel 项目。 安装完成后进入项目目录 cd my_project接下来需要对 Laravel 项目进行一些基本的配置。Laravel 的配置文件位于项目根目录下的.env文件中这个文件包含了项目的各种环境变量如数据库连接信息、应用密钥等。打开.env文件找到以下部分 DB_CONNECTIONmysql DB_HOST127.0.0.1 DB_PORT3306 DB_DATABASEyour_database_name DB_USERNAMEyour_database_username DB_PASSWORDyour_database_password根据你的实际数据库配置修改DB_DATABASE、DB_USERNAME和DB_PASSWORD等字段。例如如果你的数据库名称是laravel_demo用户名是root密码为空那么配置如下 DB_CONNECTIONmysql DB_HOST127.0.0.1 DB_PORT3306 DB_DATABASElaravel_demo DB_USERNAMEroot DB_PASSWORD这样就完成了 Laravel 框架的安装与基本配置。 2.2 路由定义、控制器创建、视图渲染 路由定义在 Laravel 中路由定义主要在routes/web.php文件中进行。这个文件定义了应用程序的 Web 路由即处理 HTTP 请求的规则。例如要定义一个简单的路由当用户访问/hello时返回 “Hello, World!”可以在routes/web.php中添加以下代码 Route::get(/hello, function () {return Hello, World!; });在这个例子中Route::get表示定义一个 HTTP GET 请求的路由第一个参数/hello是路由的 URL 路径第二个参数是一个匿名函数当用户访问该 URL 时会执行这个函数并返回结果。 除了简单的返回字符串路由还可以指向控制器方法。例如定义一个路由访问用户列表页面 Route::get(/users, UserControllerindex);这里UserControllerindex表示调用UserController控制器中的index方法来处理这个请求。 控制器创建控制器用于处理业务逻辑和请求。在 Laravel 中可以使用 Artisan 命令来快速创建控制器。在命令行中执行以下命令 php artisan make:controller UserController这将在app/Http/Controllers目录下创建一个名为UserController的控制器文件。打开这个文件默认会有一个基础的控制器类结构例如 namespace App\Http\Controllers;use Illuminate\Http\Request;class UserController extends Controller {// 定义index方法public function index(){// 这里可以编写获取用户列表的业务逻辑$users [user1, user2, user3];return view(users.index, compact(users));} }在index方法中我们模拟获取了一个用户列表实际应用中会从数据库中查询然后使用view函数将数据传递给视图进行渲染。compact(‘users’)会将$users变量传递给视图。 视图渲染Laravel 使用 Blade 模板引擎来渲染视图。视图文件通常存储在resources/views目录下。例如为上面的用户列表路由创建一个视图文件resources/views/users/index.blade.php内容如下 !DOCTYPE html html langen headmeta charsetUTF-8titleUser List/title /head bodyh1User List/h1ulforeach ($users as $user)li{{ $user }}/liendforeach/ul /body /html在这个视图文件中使用了 Blade 模板的foreach指令来循环遍历$users变量并将每个用户显示在列表中。{{ $user }}用于输出变量的值Blade 会自动对输出进行转义防止 XSS 攻击。 当用户访问/users路由时Laravel 会调用UserController的index方法该方法获取用户数据并传递给users.index视图进行渲染最终将生成的 HTML 页面返回给用户。 2.3 数据库操作ORM 的使用 Laravel 的 Eloquent ORM 提供了强大的数据库操作功能允许开发者使用面向对象的方式与数据库进行交互而无需编写复杂的 SQL 语句。 创建模型在进行数据库操作之前首先需要创建模型。模型是与数据库表对应的 PHP 类通过模型可以方便地进行数据的增删改查操作。使用 Artisan 命令创建一个User模型 php artisan make:model User这将在app目录下创建一个User.php文件内容如下 namespace App;use Illuminate\Database\Eloquent\Model;class User extends Model {// 如果模型对应的表名不是复数形式的类名例如表名是user而不是users可以通过以下方式指定表名// protected $table user;// 如果主键不是id可以通过以下方式指定主键// protected $primaryKey user_id; }默认情况下模型会自动与复数形式的类名对应的数据库表进行关联例如User模型对应users表主键为id。 定义关系在实际应用中数据库表之间通常存在各种关系如一对一、一对多、多对多等。Eloquent ORM 提供了简洁的方式来定义和操作这些关系。 例如假设User模型与Post模型之间存在一对多的关系即一个用户可以有多个文章。在User模型中定义关系如下 namespace App;use Illuminate\Database\Eloquent\Model;class User extends Model {public function posts(){return $this-hasMany(App\Post);} }在Post模型中定义反向关系 namespace App;use Illuminate\Database\Eloquent\Model;class Post extends Model {public function user(){return $this-belongsTo(App\User);} }通过这样的定义就可以方便地通过用户获取其所有文章或者通过文章获取其所属用户。例如 $user User::find(1); $posts $user-posts; // 获取用户1的所有文章$post Post::find(1); $user $post-user; // 获取文章1的作者执行查询Eloquent ORM 提供了丰富的查询方法来执行数据库操作。 查询所有记录使用all方法可以获取模型对应的表中的所有记录。 $users User::all();根据主键查询使用find方法可以根据主键获取一条记录。 $user User::find(1);条件查询使用where方法可以进行条件查询。 $users User::where(age, , 20)-get(); // 获取年龄大于20的所有用户插入数据可以通过创建模型实例并调用save方法来插入数据。 $user new User; $user-name John; $user-email johnexample.com; $user-save();或者使用create方法一次性创建并保存数据。 $user User::create([name Jane,email janeexample.com ]);更新数据先获取要更新的记录然后修改其属性并调用save方法。 $user User::find(1); $user-name New Name; $user-save();也可以使用update方法进行批量更新。 User::where(age, , 20)-update([status inactive]); // 将年龄小于20的用户状态更新为inactive删除数据获取要删除的记录并调用delete方法。 $user User::find(1); $user-delete();或者使用destroy方法根据主键删除记录。 User::destroy(1); // 删除主键为1的用户 User::destroy([1, 2, 3]); // 删除主键为1、2、3的用户通过以上步骤就可以在 Laravel 框架中使用 Eloquent ORM 进行各种数据库操作实现数据的有效管理和应用功能的开发。 三、小型项目实战 3.1 项目需求分析与架构设计 我们以开发一个简单博客为例来进行项目实战。这个博客需要具备以下主要功能 文章展示能够在首页展示文章列表包括文章标题、简介、发布时间等信息点击文章标题可以查看文章的详细内容。文章发布博主可以登录后台撰写新文章包括输入文章标题、内容、选择分类标签等然后发布文章。文章编辑博主可以对已发布的文章进行编辑修改文章的标题、内容、分类标签等信息。文章删除博主可以删除不再需要的文章。用户评论访客可以在文章详情页面发表评论评论内容包括评论者姓名、邮箱、评论内容等博主可以对评论进行管理如删除不当评论。 基于 Laravel 框架我们采用 MVC 架构模式进行项目设计。 模型层Model负责与数据库进行交互处理数据的存储和读取。在博客项目中我们需要创建User模型用于管理用户信息如博主信息、Post模型用于管理文章数据、Comment模型用于管理评论数据以及Category模型用于管理文章分类数据等。每个模型类对应数据库中的一张表通过 Eloquent ORM 实现对表中数据的增删改查操作。视图层View负责将数据展示给用户使用 Blade 模板引擎来编写 HTML 页面。在博客项目中我们需要创建首页视图展示文章列表、文章详情视图、文章发布视图、文章编辑视图、评论展示视图等。视图文件存储在resources/views目录下通过 Blade 模板的语法如变量输出、循环、条件判断等将模型层传递过来的数据进行展示。控制器层Controller作为模型层和视图层之间的桥梁接收用户的请求调用相应的模型方法获取或处理数据然后选择合适的视图进行渲染并返回给用户。在博客项目中我们需要创建PostController用于处理文章相关的请求如文章列表展示、文章发布、文章编辑、文章删除等、CommentController用于处理评论相关的请求如评论发表、评论删除等等控制器。 数据库表结构设计如下 users 表存储用户信息字段包括id主键自增长、name用户名、email邮箱、password密码、created_at创建时间、updated_at更新时间等。posts 表存储文章信息字段包括id主键自增长、user_id外键关联users表的id表示文章作者、category_id外键关联categories表的id表示文章分类、title文章标题、content文章内容、excerpt文章简介、published_at发布时间、created_at创建时间、updated_at更新时间等。comments 表存储评论信息字段包括id主键自增长、post_id外键关联posts表的id表示评论所属文章、user_id外键关联users表的id表示评论者可为空代表访客评论、name评论者姓名当user_id为空时使用、email评论者邮箱当user_id为空时使用、content评论内容、created_at创建时间、updated_at更新时间等。categories 表存储文章分类信息字段包括id主键自增长、name分类名称、created_at创建时间、updated_at更新时间等。 通过这样的架构设计和数据库表结构设计我们可以清晰地组织代码实现博客项目的各项功能。 3.2 基于框架实现项目功能 文章展示 在routes/web.php中定义文章列表和文章详情的路由 Route::get(/posts, PostControllerindex); Route::get(/posts/{id}, PostControllershow);在PostController中实现index方法和show方法 namespace App\Http\Controllers;use App\Post; use Illuminate\Http\Request;class PostController extends Controller {public function index(){$posts Post::orderBy(published_at, desc)-paginate(10);return view(posts.index, compact(posts));}public function show($id){$post Post::findOrFail($id);$comments $post-comments;return view(posts.show, compact(post, comments));} }在resources/views目录下创建posts文件夹并在其中创建index.blade.php和show.blade.php视图文件用于展示文章列表和文章详情 index.blade.php extends(layouts.app)section(content)h1文章列表/h1foreach ($posts as $post)divh2a href{{ route(posts.show, $post-id) }}{{ $post-title }}/a/h2p{{ $post-excerpt }}/pp发布时间{{ $post-published_at }}/p/divendforeach{{ $posts-links() }} endsectionshow.blade.php extends(layouts.app)section(content)h1{{ $post-title }}/h1p{{ $post-content }}/pp发布时间{{ $post-published_at }}/ph2评论/h2foreach ($comments as $comment)divp{{ $comment-name }}{{ $comment-email }}{{ $comment-content }}/pp评论时间{{ $comment-created_at }}/p/divendforeachh2发表评论/h2form action{{ route(comments.store) }} methodpostcsrfinput typehidden namepost_id value{{ $post-id }}input typetext namename placeholder姓名 requiredinput typeemail nameemail placeholder邮箱 requiredtextarea namecontent placeholder评论内容 required/textareabutton typesubmit发表评论/button/form endsection文章发布 在routes/web.php中定义文章发布的路由 Route::get(/posts/create, PostControllercreate); Route::post(/posts, PostControllerstore);在PostController中实现create方法和store方法 public function create() {$categories Category::all();return view(posts.create, compact(categories)); }public function store(Request $request) {$request-validate([title required|max:255,content required,category_id required|exists:categories,id]);$post new Post;$post-user_id auth()-user()-id;$post-category_id $request-category_id;$post-title $request-title;$post-content $request-content;$post-excerpt substr($request-content, 0, 100);$post-published_at now();$post-save();return redirect()-route(posts.index)-with(success, 文章发布成功); }在resources/views/posts目录下创建create.blade.php视图文件用于展示文章发布表单 extends(layouts.app)section(content)h1发布文章/h1form action{{ route(posts.store) }} methodpostcsrfinput typetext nametitle placeholder文章标题 requiredselect namecategory_id requiredoption value选择分类/optionforeach ($categories as $category)option value{{ $category-id }}{{ $category-name }}/optionendforeach/selecttextarea namecontent placeholder文章内容 required/textareabutton typesubmit发布文章/button/form endsection文章编辑 在routes/web.php中定义文章编辑的路由 Route::get(/posts/{id}/edit, PostControlleredit); Route::put(/posts/{id}, PostControllerupdate);在PostController中实现edit方法和update方法 public function edit($id) {$post Post::findOrFail($id);$categories Category::all();return view(posts.edit, compact(post, categories)); }public function update(Request $request, $id) {$request-validate([title required|max:255,content required,category_id required|exists:categories,id]);$post Post::findOrFail($id);$post-category_id $request-category_id;$post-title $request-title;$post-content $request-content;$post-excerpt substr($request-content, 0, 100);$post-save();return redirect()-route(posts.index)-with(success, 文章编辑成功); }在resources/views/posts目录下创建edit.blade.php视图文件用于展示文章编辑表单 extends(layouts.app)section(content)h1编辑文章/h1form action{{ route(posts.update, $post-id) }} methodpostcsrfmethod(put)input typetext nametitle placeholder文章标题 value{{ $post-title }} requiredselect namecategory_id requiredforeach ($categories as $category)option value{{ $category-id }} {{ $category-id $post-category_id? selected : }}{{ $category-name }}/optionendforeach/selecttextarea namecontent placeholder文章内容 required{{ $post-content }}/textareabutton typesubmit保存修改/button/form endsection文章删除 在routes/web.php中定义文章删除的路由 Route::delete(/posts/{id}, PostControllerdestroy);在PostController中实现destroy方法 public function destroy($id) {$post Post::findOrFail($id);$post-delete();return redirect()-route(posts.index)-with(success, 文章删除成功); }通过以上步骤我们基于 Laravel 框架实现了简单博客的主要功能。 3.3 项目测试与部署 项目测试我们使用 PHPUnit 来进行单元测试。PHPUnit 是一个广泛使用的 PHP 单元测试框架与 Laravel 集成良好。 安装 PHPUnit如果在创建 Laravel 项目时使用的是 ComposerPHPUnit 通常已经作为依赖项包含在项目中。如果没有可以通过 Composer 进行安装 composer require --dev phpunit/phpunit编写测试用例在tests/Unit目录下创建测试文件例如PostTest.php用于测试文章相关的功能。 namespace Tests\Unit;use App\Post; use Tests\TestCase;class PostTest extends TestCase {public function testCreatePost(){$post Post::factory()-create([title 测试文章标题,content 测试文章内容,]);$this-assertInstanceOf(Post::class, $post);$this-assertEquals(测试文章标题, $post-title);$this-assertEquals(测试文章内容, $post-content);}public function testUpdatePost(){$post Post::factory()-create();$post-title 更新后的文章标题;$post-content 更新后的文章内容;$post-save();$updatedPost Post::find($post-id);$this-assertEquals(更新后的文章标题, $updatedPost-title);$this-assertEquals(更新后的文章内容, $updatedPost-content);}public function testDeletePost(){$post Post::factory()-create();$post-delete();$deletedPost Post::find($post-id);$this-assertNull($deletedPost);} }运行测试在命令行中执行vendor/bin/phpunit命令PHPUnit 会自动运行tests目录下的所有测试用例并输出测试结果。如果测试通过会显示绿色的通过信息如果测试失败会显示红色的失败信息并给出详细的错误原因。 项目部署将项目部署到服务器上以下以 Nginx 作为 Web 服务器MySQL 作为数据库为例。 配置 Web 服务器 确保服务器上安装了 Nginx 和 PHP。在 Nginx 的配置文件中为项目创建一个新的虚拟主机配置。例如在/etc/nginx/sites-available/目录下创建一个新的配置文件如my_blog.conf server {listen 80;server_name your_domain.com;root /var/www/html/my_blog/public;index index.php index.html index.htm;location / {try_files $uri $uri/ /index.php?$query_string;}location ~ \.php$ {fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;} }启用虚拟主机配置ln -s /etc/nginx/sites-available/my_blog.conf /etc/nginx/sites-enabled/重启 Nginx 服务systemctl restart nginx配置数据库在服务器上安装 MySQL并创建一个新的数据库和用户。然后在项目的.env文件中更新数据库连接信息 DB_CONNECTIONmysql DB_HOST127.0.0.1 DB_PORT3306 DB_DATABASEyour_database_name DB_USERNAMEyour_database_username DB_PASSWORDyour_database_password上传项目文件可以使用 Git、FTP 等工具将项目文件上传到服务器的指定目录如/var/www/html/my_blog/。安装依赖进入项目目录运行composer install --optimize-autoloader --no-dev命令安装项目所需的依赖包。生成应用密钥运行php artisan key:generate命令生成应用程序密钥。运行数据库迁移和种子如果有运行php artisan migrate命令将数据库表结构迁移到服务器的数据库中。如果项目中有数据种子文件还可以运行php artisan db:seed命令填充初始数据。设置文件权限确保项目的storage和bootstrap/cache目录可写以便 Laravel 能够存储缓存和日志等文件。可以使用以下命令设置权限 chmod -R 755 storage chmod -R 755 bootstrap/cache通过以上步骤完成了项目的测试与部署使简单博客项目能够在服务器上正常运行供用户访问和使用。
http://www.pierceye.com/news/619754/

相关文章:

  • 每个城市建设规划在哪个网站wordpress 无法安装主题
  • 自建网站做外贸谷歌推广网站内部资源推广方法
  • 网站数据库5g一个人看的免费视频高清直播
  • 怎么做网站注册推广泰州网站建设费用
  • 找南阳建立网站的公司网址大全最新版的
  • 网站建设与维护就业前景小程序开发外包注意事项
  • 胶州网站建设哪里有天润网站建设
  • 网站备案 怎么加搜索引擎网站建设
  • 做外贸自己开公司网站网站建设三个友好
  • 深圳高端品牌网站设计网站建设实训报告收获
  • 万虹点读机如何做系统下载网站网站seo的重要性
  • 同一家公司可以做几个网站吗铁岭网站开发公司
  • 网站推广费用大概需要多少钱个人二级网站怎么做
  • 查询企业的网站有哪些山东平台网站建设找哪家
  • 如何推广外贸型网站wordpress本地环境迁移
  • 网站建设国内外现状网站建设公司 网络服务
  • 百度网站首页福田时代汽车官方网站
  • 网站建设智推网深圳进出口贸易有限公司
  • 网站开发语言pwordpress v4.9.5
  • 东莞建站模板源码东莞注塑切水口东莞网站建设
  • 做文案策划需要看什么网站服装网站开发目的
  • 湖北定制型网站建设微信公众平台网页版
  • 需要做网站的公司有哪些免费网页模板之家
  • 淘客网站怎么备案合肥在线官网
  • 马上飞做的一些网站免费自助建站系统有哪些
  • 建网站投放广告赚钱wordpress全屏弹窗插件
  • 电子商务公司网站模版通辽网站建设公司
  • 国外社交网站建设苏州seo门户网
  • 小程序建站公司唐山网页搜索排名提升
  • 网站后台模板北京网络营销方案