ホームページ > バックエンド開発 > PHPチュートリアル > WEBプログラミングアーキテクチャの革新に関する予備的研究

WEBプログラミングアーキテクチャの革新に関する予備的研究

WBOY
リリース: 2016-06-13 12:15:28
オリジナル
817 人が閲覧しました

WEBプログラミングアーキテクチャ改革に関する予備研究

プログラミングMVCアーキテクチャは、長い間、人々の心に深く根付いてきました。プログラミング言語の継続的な進歩と開発に伴い。このアーキテクチャは決して進歩していません。私たちは MVC モデルを VC モデルに大胆に進化させようとしています。 [注意してください] 私は進化を使用しています。これは、最初に MVC、次に VC を意味します。ダイレクトVCモードではなく。

繰り返しますが、これは MVC モデルが悪いと言っているわけではありません。実際には、さらに進化する可能性があります。 MVC パターンに慣れていないと、VC パターンを理解できません。
表面的には、Model の省略はプログラミング言語の進化の結果です。退化するというよりも。これにより効率が大幅に向上します。 。 。

1. モデルの前提条件を省略します。
2. モデルの実装を省略します。
3. モデルを省略することの強力な利点。
4. モデルを省略することで失われた機能を補うにはどうすればよいですか?
5. この VC アーキテクチャ用の PHP フレームワークの実装。
上記の機能は以下に徐々に追加されます...
ここでいくつかのアイデアを共有したいと思います。アドバイスをいただければ幸いです。 。 。 。
フォローアップする価値はあります。 。 。 。

-----ソリューションのアイデア----------------------

引用:
引用:引用:

まずレンガを投げなさい: あなたは MV に退化しました


【注意】私は進化を使用しています。これは、最初に MVC、次に VC を意味します。ダイレクトVCモードではなく。
'
大まかな概要は述べましたが、具体的にはどうすればいいのでしょうか?
------解決案----------------------
こんな解決案もあります進化 うわー、席に座って、オリジナルのポスターが彼の意見を表現し続けるのを見てください。
------ソリューションのアイデア----------------------
MVC の M は主にデータベースを扱います。ビジネスロジック。
もっと簡単に言うと、Cさんをビジネスマン、Vさんを顧客、Mさんをメーカーと考えてみましょう。メーカー(M)がキャンセルした場合、事業者(C)がメーカー(M)の責任を負うことになります。ステップが省略されているように見えますが、実際には M がなければ、C でのみ処理されるすべての業務を解決するために、それに代わる別の製品が必然的に発生します。もちろん、M の代わりに C を使用したり、M を置き換える別のソリューションを使用したりすることもできます。これにより、C の負担も増加し、コードがより複雑になり、コードの再利用性が相対的に低下します。一部のデータベース操作メソッドは Thinkphp にカプセル化されていますが、M の代替にはならない可能性があります。

個人的な意見です。気に入らない場合はコメントしないでください~~~
-----解決策のアイデア------------- ------- --
投稿者はデータベースのみを考慮しています。データベース以外のビジネス ロジック操作の場合、この MODEL はどこに配置されますか?
---- --解決策のアイデア-------- -------------
ポスターにはすでにそのようなフレームワークがあるので、それを共有してみんなで学びましょう。
------解決策のアイデア----------------------
これは C で書かれた M ですフロントエンドメンバーとバックエンド管理者の両方が製品を編集する必要があることに最初に遭遇したとき、私は同じことをしました (ThinkPHP)

AdminControllerProductController.class.php:

<br />namespace Admin\Controller;<br />use Api\Controller\ProductController as ApiProduct;<br />class ProductController extends AdminController {<br />    public function edit() {<br />        if (I('submit')) {<br />            $res = ApiProduct::setInfo(I());<br />            if ($res === true) {<br />                $alert = I('id') ? '编辑成功' : '发布成功';<br />                $this->success($alert, '/admin/product');<br />                exit;<br />            } else {<br />                $this->error($res);<br />            }<br />        }<br /><br />        I('id') && $this->data = ApiProduct::getInfo(I('id'));<br />        $this->cate = ApiProduct::getCate();<br />        $this->paramdata = ApiProduct::getParam();<br />        $this->param = C('YH_PARAM');<br />        $this->title = I('id') ? '商品编辑' : '商品发布';<br />        $this->display('product/edit');<br />    }<br />}<br />
ログイン後にコピー


ApiControllerProductController.class.php:

<br />    public function getInfo($id) {<br />        $id = intval($id);<br />        $data = M('product')->where("id = $id")->find();<br />        $stripfield = array('name', 'name_en', 'content', 'content_en');<br />        foreach ($stripfield as $field) {<br />            $data[$field] = stripslashes($data[$field]);<br />        }<br />        $data['adddate'] = date('Y-m-d', $data['addtime']);<br />        $data['pathArr'] = explode('-', $data['path']);<br />        $data['img'] = ImageController::getAll(1, $id);<br />        return $data;<br />    }<br /><br />    public function setInfo($post) {<br />        $id = intval($post['id']);<br />        $data = array();<br />        $data['logo'] = $post['logo'];<br />        $data['name'] = $post['name'];<br />        $data['name_en'] = $post['name_en'];<br />        $cid = intval($post['cid']);<br />        $data['path'] = self::getCatePath($cid);<br />        list($top) = explode('-', $data['path']);<br />        $param = C('YH_PARAM');<br />        foreach ($param as $key => $val) {<br />            $data[$val['field']] = $post[$val['field']][$top];<br />        }<br />        $data['content'] = $post['content'];<br />        $data['content_en'] = $post['content_en'];<br />        $data['urltb'] = format_url($post['urltb']);<br />        $data['urlone'] = format_url($post['urlone']);<br />        $data['urljd'] = format_url($post['urljd']);<br /><br />        if (empty($data['name']) <br><font color='#FF8000'>------解决思路----------------------</font><br> empty($data['name_en'])) {<br />            return '商品名称不能为空';<br />        }<br />        if (empty($data['path'])) {<br />            return '请选择分类';<br />        }<br /><br />        if ($id) {<br />            $data['id'] = $id;<br />            M('product')->save($data);<br />        } else {<br />            $data['addtime'] = time();<br />            $id = M('product')->add($data);<br />        }<br /><br />        ImageController::addImg($post['newimg'], 1, $id);<br />        ImageController::delImg($post['delimg']);<br />        if (empty($data['logo'])) {<br />            $logo = ImageController::getOne(1, $id);<br />            M('product')->where("id = $id")->setField('logo', $logo);<br />        }<br /><br />        return true;<br />    }<br /><br />
ログイン後にコピー


これらの共通インターフェイスはすべて C で書きましたが、実際には M だと思います...
たとえば、ログイン操作 には、ログイン インターフェイスといくつかのパラメータがあります。ユーザー名とパスワードを渡し、true または失敗の理由を返します。このプロセス中に、セッションを作成するか、セッション サーバーにセッションを送信する必要があります。自動的にログインするにはパスワードを覚えておく必要がありますか?このパラメータは Cookie の書き込みに影響します。他の機能を実装するためにログイン ID を共有メモリに記録しますか?これらの操作はユーザーがログインする M にカウントされると思います
-----ソリューションアイデア-------- -- -
では、なぜ勝手に意見を出し合って構造を議論するのでしょうか?
私はもうすぐ 70 歳で、体力も限られているので、時々小さなプロジェクトを引き受けます。フォーラムに参加する理由は、遅れをとらないためです。頭を使わないと認知症になるのではありませんか。
------ソリューションアイデア----------------------

Laravel の作者が書きました「From Apprentice To Artisan」という本があり、「MVC Is Killing You」と「Bye Bye Models」という章があります。元の投稿者は大神と同じレベルに達しているようです。この本を読みに行ってもいいよ。 。 。

詳細はわかりませんが、作者が開発したフレームワークには非常に明確な MVC フォルダーがあります。しかし、彼が書いた本はこの見解を覆しました。投稿者はその研究に興味があります。 thinkphp はもはや研究の範囲外です。


-----ソリューションアイデア----------------------
フレームワークなし良いか悪いかの違いは、それが適しているかどうかだけです。 。
元のポスターのこの小さな修正では、おそらく複雑な作業には遭遇しませんでした。 。
ここでは、M と C の間にモジュールを追加します。C はさまざまなモジュールを直列に接続するだけで、モジュールはモデルを操作してそれを実現します。 。各業務モジュールの結合度が非常に低く、非常に使いやすいと感じます。 。
------解決策のアイデア----------------------
今日はナルシシズムという言葉を学びました
-----ソリューションのアイデア----------------------
引用:
引用: 引用:

今日、私は単語を学びました: ナルシシズム

また、今日の単語: wuzhi&&youzhi.


追伸、あなたのピンインと英語のマッシュアップはとてもクールです! ちょっと待って、私が書いたものをコピーして貼り付けてからピンインを追加しただけですか? 。元財産 500 PM にとっては最悪です!!!
-----解決策のアイデア-----------
$data['company_id']=$_POST['id'];
$data['kefu_name']=$_POST['kefu_name'];
$data['passwd']= $_POST['passwd'];
$data['kefu_type']=$_POST['kefu_type']; $ data['open_time']=time();

これはすでに非常に複雑ですこれらはすべてコード ジェネレーターによって生成されると言いたいかもしれませんが、データベース テーブルの構造を変更することによって生じる変更についてはどうすればよいでしょうか。これは、HTML の表示ページも省略したものにすぎません。一つずつ書く必要がありますか?

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート