ホームページ PHPフレームワーク Laravel ChatGPT が一般のプログラマーに大きな影響を与えることは、例によって証明されています。

ChatGPT が一般のプログラマーに大きな影響を与えることは、例によって証明されています。

Mar 17, 2023 pm 03:52 PM
laravel プログラマー chatgpt

この記事では、ChatGPT に関する関連知識をお届けします。主に、一般のプログラマーに対する ChatGPT の影響や助けを証明するために例を使用する方法について説明します。興味のある方は以下をご覧ください。皆様のお役に立てれば幸いです。

コミュニティで質問を拝見しました。次のような判定ロジックをエレガントに記述する方法を聞きたいです:
(かなり多くの判定があることがわかります)見てください)

腐植酸含量 30 g/L(不低于 30 g/L)(右边有 +- 键,可以增加或减少,但净含量不低于 30 g/L)。大量元素含量(合计不低于 200 g/L):氮 70 g/L (下边有两个选择,UAN 或氮,每个健右边有 +- 键,可以增加或减少,下同), 磷 70 g/L (下边有两个选择,磷酸一铵或磷酸二铵,每个健右边有 +- 键,可以增加或减少,下同),钾 60 g/L (下边有四个选择,氯化钾、硫酸钾、硝酸钾或磷酸二氢钾,每个健右边有 +- 键,可以增加或减少,下同)。至少包括两种元素,单一元素净含量不低于 20 g/L,氮、磷、钾三个相加不能低于 200 g/L,低于 200 g/L 弹出错误提示。
ログイン後にコピー
游离氨基酸 100 g/L(不低于 100 g/L)(右边有 +- 键,可以增加或减少,但净含量不低于 100 g/L),微量元素(不低于 20 g/L):铁 4 g/L (每个右边有 +- 键,可以增加或减少,至少包括 1 种微量元素,6 种元素净含量总和不低于 20 g/L,低于则有错误提示。若添加任一微量元素,不低于 0.5 g/L,低于则有错误提示)、锌 4g/L、硼 4g/L、铜 4g/L、锰 3.5g/L、钼 0.5g/L(右边有 +- 键,可以增加或减少,钼净含量不能高于 5 g/L,高于则有错误提示)
ログイン後にコピー

これを思い返してみると、私はいつも ChatGPT にそれが同じくらい素晴らしいかどうかを尋ねていました。
そこで、元の質問を ChatGPT に送信したところ、次のような答えが得られました:
(私のネットワークはそれほど安定していないため、途中でネットワークが切断されたとよく言われる回答なので、例の一部のみを渡します)

ChatGPT 回答バージョン 1.1

Laravel フレームワークでは、フォームバリデーターを使用して条件を検証できます。具体的には、実装手順は次のとおりです。

  • #カスタム検証ルールの作成

#Laravel フレームワークでは、

php Artisan make:rule コマンドを使用してカスタム検証ルール クラスを作成できます。このカスタム検証ルール クラスは、Illuminate\Contracts\Validation\Rule インターフェイスを実装し、その中に検証ルールのロジックを記述する必要があります。 たとえば、肥料条件を検証するために、
FertilizerRule という名前のカスタム検証ルール クラスを作成できます。

$ php artisan make:rule FertilizerRule
ログイン後にコピー

FertilizerRule クラスでは、## を実装できます。 #passes メソッドを検証します。検証が成功した場合は true を返し、それ以外の場合は false を返します: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">namespace App\Rules; use Illuminate\Contracts\Validation\Rule; class FertilizerRule implements Rule {     public function passes($attribute, $value)     {         // TODO: 编写肥料条件的验证逻辑     }     public function message()     {         return 'The :attribute is invalid.';     } }</pre><div class="contentsignin">ログイン後にコピー</div></div>

    検証ロジックの作成
FertilizerRule

クラスでは、質問の要件に従って肥料条件の検証ロジックを作成できます。以下は一例です。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;?php namespace App\Rules; use Illuminate\Contracts\Validation\Rule; class FertilizerRule implements Rule { public function passes($attribute, $value) { // 验证腐植酸含量 if (!isset($value[&amp;#39;humic_acid&amp;#39;]) || $value[&amp;#39;humic_acid&amp;#39;] &lt; 30) { return false; } // 验证大量元素含量 $total_npk = $value[&amp;#39;nitrogen&amp;#39;] + $value[&amp;#39;phosphorus&amp;#39;] + $value[&amp;#39;potassium&amp;#39;]; if ($total_npk &lt; 200) { return false; } if ($value[&amp;#39;nitrogen&amp;#39;] &lt; 70 || $value[&amp;#39;phosphorus&amp;#39;] &lt; 70 || $value[&amp;#39;potassium&amp;#39;] &lt; 60) { return false; } // 验证至少包括两种元素,单一元素净含量不低于 20 g/L $count = 0; foreach ([&amp;#39;nitrogen&amp;#39;, &amp;#39;phosphorus&amp;#39;, &amp;#39;potassium&amp;#39;] as $element) { if ($value[$element] &gt;= 20) {                 $count++;             }         }         if ($count &lt; 2) { return false; } // 验证游离氨基酸含量 if (!isset($value[&amp;#39;amino_acid&amp;#39;]) || $value[&amp;#39;amino_acid&amp;#39;] &lt; 100) { return false; } // 验证微量元素含量 $total_trace = 0; $trace_elements = [&amp;#39;iron&amp;#39;, &amp;#39;zinc&amp;#39;, &amp;#39;boron&amp;#39;, &amp;#39;copper&amp;#39;, &amp;#39;manganese&amp;#39;, &amp;#39;molybdenum&amp;#39;]; foreach ($trace_elements as $element) { if (isset($value[$element])) { $total_trace += $value[$element]; } } if (count(array_filter($value, function ($v) { return $v &gt;= 0.5; })) &lt; 1 || $total_trace &lt; 20 || //...代码不完整</pre><div class="contentsignin">ログイン後にコピー</div></div>

トピックによって求められる上品さとはかなりの違いがあるようなので、引き続き質問しました

##私: その気はありません エレガントすぎて、if が多すぎて、あまり明確ではありません。最適化してください

ChatGPT 回答バージョン 1.2

はい、このコードには多くの if ステートメントが含まれているため、コードを読みにくく、保守しにくくなっています。このコードを複数の関数に分割し、それぞれが 1 つの特定の条件のみを処理する役割を担うようにすることをお勧めします。これにより、コードがより明確になり、読みやすく、保守しやすくなります。 可能な最適化は次のとおりです:

 function validateHumicAcid($value) {
    return $value >= 30;
}

function validateMacroElements($nitrogen, $phosphorus, $potassium) {
    $sum = $nitrogen + $phosphorus + $potassium;
    return $sum >= 200 && $nitrogen >= 20 && $phosphorus >= 20 && $potassium >= 20;
}

function validateTraceElements($iron, $zinc, $boron, $copper, $manganese, $molybdenum) {
    $sum = $iron + $zinc + $boron + $copper + $manganese + $molybdenum;
    $atLeastOne = $iron >= 0 || $zinc >= 0 || $boron >= 0 || $copper >= 0 || $manganese >= 0 || $molybdenum >= 0;
    $atLeastSix = $sum >= 20;
    return $atLeastOne && $atLeastSix && $molybdenum <= 5;
}

function validateAminoAcids($value) {
    return $value >= 100;
}

function validate($humicAcid, $nitrogen, $phosphorus, $potassium, $iron, $zinc, $boron, $copper, $manganese, $molybdenum, $aminoAcids) {
    $isValid = true;

    if (!validateHumicAcid($humicAcid)) {
        $isValid = false;
        // 输出错误提示
    }

    if (!validateMacroElements($nitrogen, $phosphorus, $potassium)) {
        $isValid = false;
        // 输出错误提示
    }

    if (!validateTraceElements($iron, $zinc, $boron, $copper, $manganese, $molybdenum)) {
        $isValid = false;
        // 输出错误提示
    }

    if (!validateAminoAcids($aminoAcids)) {
        $isValid = false;
        // 输出错误提示
    }

    return $isValid;
}
ログイン後にコピー

さて、検証ロジックを 4 つの独立した関数に分割し、それぞれが特定の条件の処理に焦点を当てました。これにより、コードがより簡潔になり、理解しやすくなります。

最後に、これらの関数を結合し、validate 関数で使用して入力値を検証します。入力が不正な場合は false を返し、エラーメッセージを出力します。それ以外の場合は true を返します。

ここでのエラー プロンプトはコメントでマークされており、実際には Laravel フレームワークが提供するエラー処理メカニズムを通じて出力される必要があることに注意してください。

あなたは見ることができます

ChatGPT

私の質問によると、この問題を解決するために関数を使用するように変更しました引き続き質問します。 私: まだエレガントとは言えません。laravel フレームワークを使用し、責任チェーン設計パターンを使用してこのリクエストを設計してください

ChatGPT 回答バージョン1.3

それでは、Laravel フレームワークと責任連鎖設計パターンを使用してこの要件を設計する方法を説明しましょう。 まず、各条件が満たされているかどうかを検証するバリデーター クラスを定義する必要があります。このクラスは、Laravel フレームワークに Illuminate\Contracts\Validation\Validator インターフェイスを実装できるため、Laravel の組み込みバリデータ コンポーネントと簡単に統合できます。

次に、抽象基本クラス Validatable を定義できます。これは、入力値が指定された条件を満たしているかどうかを検証する抽象メソッド validate を定義します。各条件に基づいて特定のバリデータ クラスを定義でき、これらのクラスは Validatable を継承し、特定の検証のための validate メソッドを実装します。

最後に、責任連鎖パターンを使用してこれらのバリデーター クラスを編成し、入力値を順番に検証することができます。各バリデーター クラスは、次のバリデーター クラスのインスタンスを保持する次の属性を設定できます。 validate メソッドでは、現在のバリデーターが検証に失敗した場合、次のバリデーターの validate メソッドが呼び出され、すべてのバリデーターが検証されるか 1 つのバリデーターが失敗するまで繰り返されます。

以下は、フミン酸含有量とマクロ要素含有量の 2 つの条件を検証するためのサンプル コードです。

<?php

namespace App\Validators;

use Illuminate\Contracts\Validation\Validator;

abstract class Validatable implements Validator
{
    protected $next;

    public function setNext(Validatable $next)
    {
        $this->next = $next;
        return $next;
    }

    public function validate($attribute, $value, $parameters = [], $validator = null)
    {
        if ($this->condition($value)) {
            return true;
        } elseif ($this->next) {
            return $this->next->validate($attribute, $value, $parameters, $validator);
        } else {
            return false;
        }
    }

    abstract protected function condition($value);
}

class HumicAcidValidator extends Validatable
{
    protected function condition($value)
    {
        return $value >= 30;
    }
}

class NitrogenValidator extends Validatable
{
    protected function condition($value)
    {
        return $value >= 70;
    }
}

class PhosphorusValidator extends Validatable
{
    protected function condition($value)
    {
        return $value >= 70;
    }
}

class PotassiumValidator extends Validatable
{
    protected function condition($value)
    {
        return $value >= 60;
    }
}

class ValidatorChain implements Validator
{
    protected $chain;

    public function __construct()
    {
        $this->chain = new HumicAcidValidator();
        $this->chain->setNext(new NitrogenValidator())
                    ->setNext(new PhosphorusValidator())
                    ->setNext(new PotassiumValidator());
    }

    public function validate($attribute, $value, $parameters = [], $validator = null)
    {
        return $this->chain->validate($attribute, $value, $parameters, $validator);
    }
}
ログイン後にコピー

概要

## を確認できます。 #ChatGPT

彼らは私の質問に対して比較的適切な答えをくれました。これらのコードは実際のプロジェクトに直接適用することはできませんが、3 つのコードを実装する方法など、いくつかのアイデアも提供してくれました。上記の例の答えのバージョンは何ですか? 私のような初心者は、問題を解決する最初の 2 つの方法しか思いつかないかもしれません。

ChatGPTこれは、問題を解決するための新しい方法やアイデア、または私の知らない方法やアイデアを私に提供することに相当します。

もし私が将来の特定の機能についてはわかりません アイデアについては、ChatGPT~

推奨学習: 「laravel ビデオ チュートリアル

以上がChatGPT が一般のプログラマーに大きな影響を与えることは、例によって証明されています。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelは紹介例 Laravelは紹介例 Apr 18, 2025 pm 12:45 PM

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

クラフトCMSのキャッシングの問題を解決する:Wiejeben/Craft-Laravel-Mixプラグインの使用 クラフトCMSのキャッシングの問題を解決する:Wiejeben/Craft-Laravel-Mixプラグインの使用 Apr 18, 2025 am 09:24 AM

CraftCMSを使用してWebサイトを開発する場合、特にCSSやJavaScriptファイルを頻繁に更新する場合、リソースファイルのキャッシュ問題が発生することがよくあります。古いバージョンのファイルがブラウザによってキャッシュされ、ユーザーが最新の変更を表示しないようにすることがあります。この問題は、ユーザーエクスペリエンスに影響を与えるだけでなく、開発とデバッグの難しさを高めます。最近、プロジェクトで同様のトラブルに遭遇し、いくつかの調査の後、プラグインWiejeben/Craft-Laravel-Mixが見つかりました。

Laravelを学ぶ方法Laravelを無料で学ぶ方法 Laravelを学ぶ方法Laravelを無料で学ぶ方法 Apr 18, 2025 pm 12:51 PM

Laravelフレームワークを学びたいが、資源や経済的圧力に苦しんでいないのですか?この記事では、Laravelの無料学習を提供し、オンラインプラットフォーム、ドキュメント、コミュニティフォーラムなどのリソースを使用して、PHP開発の旅から習得するための堅実な基盤を築く方法を教えてくれます。

Laravelユーザーログイン機能 Laravelユーザーログイン機能 Apr 18, 2025 pm 12:48 PM

Laravelは、ユーザーモデル(Eloquentモデル)の定義、ログインフォームの作成(ブレードテンプレートエンジン)、ログインコントローラーの作成(認証\ログインコントローラーの継承)、ログイン要求の検証(Auth ::試行)の検証など、ユーザーログイン機能を実装するための包括的なAuthフレームワークを提供します。ヘッダー。さらに、AUTHフレームワークは、パスワードのリセット、電子メールの登録と検証などの機能も提供します。詳細については、Laravelのドキュメントを参照してください:https://laravel.com/doc

Laravel Frameworkインストール方法 Laravel Frameworkインストール方法 Apr 18, 2025 pm 12:54 PM

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

Laravelのバージョンは何ですか?初心者向けのLaravelのバージョンを選択する方法 Laravelのバージョンは何ですか?初心者向けのLaravelのバージョンを選択する方法 Apr 18, 2025 pm 01:03 PM

初心者向けのLaravel Frameworkバージョンの選択ガイドでは、この記事は、多くのバージョンの中で初心者が情報に基づいた選択を行うのを支援するように設計されたLaravelのバージョンの違いに分かれています。各リリースの主要な機能に焦点を当て、長所と短所を比較し、初心者がスキルレベルとプロジェクトの要件に基づいてLaravelの最も適切なバージョンを選択できるように便利なアドバイスを提供します。初心者の場合、Laravelの適切なバージョンを選択することは、学習曲線と全体的な開発経験に大きな影響を与える可能性があるため、重要です。

Laravelのバージョン番号を表示する方法は? Laravelのバージョン番号を表示する方法 Laravelのバージョン番号を表示する方法は? Laravelのバージョン番号を表示する方法 Apr 18, 2025 pm 01:00 PM

Laravelフレームワークには、開発者のさまざまなニーズを満たすためにバージョン番号を簡単に表示するための組み込みの方法があります。この記事では、Composer Command Lineツールの使用、.ENVファイルへのアクセス、PHPコードを介したバージョン情報の取得など、これらの方法について説明します。これらの方法は、Laravelアプリケーションのバージョン化の維持と管理に不可欠です。

LaravelとThinkPhpの違い LaravelとThinkPhpの違い Apr 18, 2025 pm 01:09 PM

LaravelとThinkPhpはどちらも人気のあるPHPフレームワークであり、開発における独自の利点と短所を持っています。この記事では、2つの深さを比較し、アーキテクチャ、機能、パフォーマンスの違いを強調して、開発者が特定のプロジェクトのニーズに基づいて情報に基づいた選択を行うのに役立ちます。

See all articles