账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Laravel 入库写法讨论
    55
    0
    很简单的文章提交功能,平时入库的写法,我是这么写的:foreach ($_POST['ArticelData'] as $item) { $model = new Articel(); $model->Title = $item['Title']; $model->Content = $item['Content']; $model->Image = $item['Image']; $model->save(); }但是今天看到有这么写的:主model类里这么写: $InsertData = []; foreach ($_POST['ArticelData'] as $item) { $model = new ArticelFilter($item); $model->setTitle($model->getTitle()); $model->setContent($model->getContent()); $model->setImage($model->getImage()); $InsertData[] = $model->toArray(); } Articel::insert($InsertData);ArticelFilter的Model:protected $Title;protected $Content;protected $Image; public function setTitle() { return $this->Title; } public function getTitle($Title) { $this->Title = $Title; } public function setContent($Content): { $this->Content = $Content; } public function getContent() { return $this->Content; } public function setImage($Image): { $this->Image = $Image; } public function getImage() { return $this->Image; } 这些set和get,在基类用这个构造方法实现:public function __call($name, $params){ $function_type = substr($name, 0, 3); if (in_array($function_type, array('get', 'set'))) { $property = lcfirst(substr($name, 3)); if (property_exists($this, $property)) { switch ($function_type) { case 'get': return $this->$property; case 'set': $this->$property = $params[0]; } } }}问一下各位经验丰富的大神们,这么写的原理是什么,好处是什么?感觉很多SDK都是这么写的, 这属于一种设计模式吗?
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 疾风一符 普通会员 1楼

      在 Laravel 中,库是一个组织代码的方式,通常用于封装和管理特定功能和功能组件。以下是 Laravel 库的几种主要写法:

      1. Composer:
      2. 安装 Composer 是 Laravel 的核心依赖管理工具。首先,确保你已经安装了 Composer: composer update 创建一个新的 Laravel 库项目: composer create-project laravel/laravel [project-name] 安装依赖: composer require [package-name] 编写代码: ``` // app/Http/Controllers/MyController.php <?php namespace App\Http\Controllers;

      use Illuminate\Http\Request; use App\Models\MyModel;

      class MyController extends Controller { public function index() { $myModel = new MyModel; return view('my.index', ['myModel' => $myModel]); } } 部署代码: php artisan make:controller MyController 运行控制器: php artisan serve `` 部署到服务器:使用php artisan deployphp artisan deploy:prod` 命令进行部署。

      1. VCS:
      2. Laravel 提供了一个集成 Git 的工具,称为 Laravel Git。你可以使用 git init 初始化项目,然后在 config/app.php 文件中添加 Git::push 方法: ``` config/app.php ...

      config(Git::class => 'github.git', 'push' => [ 'branch' => 'main', 'description' => 'My Laravel Git repository', 'url' => 'https://github.com/myusername/mylaravel.git', ],), 创建一个新的 Git 分支: git checkout -b my-feature 进行开发和提交更改: git add . git commit -m "Add feature" git push -u origin my-feature 部署代码: git push origin my-feature `` 使用php artisan git:push` 命令进行部署。

      1. Factory:
      2. Laravel 提供了一个名为 Factory 的容器,用于创建应用程序中的模型和控制器。创建一个新的 Laravel 库项目: composer create-project laravel/laravel [project-name] 创建一个 Factory 实例: ``` // app/Http/Controllers/MyController.php <?php namespace App\Http\Controllers;

      use Illuminate\Http\Request; use App\Models\MyModelFactory;

      class MyController extends Controller { public function index() { $myModelFactory = new MyModelFactory; $myModel = $myModelFactory->create(); return view('my.index', ['myModel' => $myModel]); } } 部署代码: php artisan make:controller MyController 运行控制器: php artisan serve `` 部署到服务器:使用php artisan deployphp artisan deploy:prod` 命令进行部署。

      1. Laravel Eloquent:
      2. Laravel Eloquent 是 Laravel 的 ORM,用于处理表单数据和关联关系。创建一个新的 Laravel 库项目: composer create-project laravel/laravel [project-name] 创建一个 Model 实例: ``` // app/Models/MyModel.php <?php namespace App\Models;

      use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request;

      class MyModel extends Model { public function getMyData() { return $this->data; }

         public function setData(Request $request)
         {
             $this->data = $request->all();
         }
      

      } 创建一个 `Repository` 实例: // app/Http/Controllers/MyController.php <?php namespace App\Http\Controllers;

      use Illuminate\Http\Request; use App\Models\MyModelRepository;

      class MyController extends Controller { public function index() { $myModelRepository = new MyModelRepository; $myModel = $myModelRepository->getMyData(); return view('my.index', ['myModel' => $myModel]); } } 部署代码: php artisan make:controller MyController 运行控制器: php artisan serve `` 部署到服务器:使用php artisan deployphp artisan deploy:prod` 命令进行部署。

      1. Database Migration:
      2. Laravel 自带了一个名为 DB 的工具,用于管理数据库。创建一个新的 Laravel 库项目: composer create-project laravel/laravel [project-name] 创建一个 Database 实例: ``` // app/Database/Database.php <?php namespace App\Database;

      use Illuminate\Support\Facades\DB;

      class Database { public function __construct() { $this->DB = DB::connection(); } } 创建一个 `Migrate` 实例: // app/Http/Controllers/MyController.php <?php namespace App\Http\Controllers;

      use Illuminate\Http\Request; use App\Database\MyDatabase;

      class MyController extends Controller { public function index() { $myDatabase = new MyDatabase; $myModel = $myDatabase->getMyData(); return view('my.index', ['myModel' => $myModel]); } } 运行控制器: php artisan make:controller MyController 部署代码: php artisan migrate `` 运行php artisan migrate:rollback` 命令回滚所有更改。

      这些是 Laravel 中库的常见写法,每种写法都有其特定的目的和用途。选择哪种写法取决于你想要创建的功能、模型和控制器的结构,以及你希望如何管理数据库和 API 部署。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部