ホームページ  >  記事  >  バックエンド開発  >  OpenCart についてのちょっとした提案

OpenCart についてのちょっとした提案

WBOY
WBOYオリジナル
2016-07-29 09:10:251061ブラウズ

OpenCart は古いオープンソースの無料 B2C 電子商取引システムです。私は最近 github でホストされているそのプロジェクトを観察しましたが、今でも非常に活発に活動しており、毎日バグが報告されていることがわかりました。

一見すると、バックグラウンドで複数のストアの管理をサポートしており、同じ商品でも異なるストアでは異なる価格を設定することができ、ストア間で異なるドメイン名をバインドすることができます。ここはかなりユニークな場所です。

しかし、そのコードを見ると、何年にもわたってほとんど変更されておらず、コードの役割分担に進化の感覚がないことがわかりました。

言語、リンク、現在のパスなど、ビューによって構築されるべき大量のデータがコントローラーに配置され、

フロントエンドのログインページのように:

<code><span>$data</span><span>[</span><span>'breadcrumbs'</span><span>]</span> = <span>array</span><span>();</span><span>$data</span><span>[</span><span>'breadcrumbs'</span><span>][]</span> = <span>array</span><span>(</span><span>'text'</span> => <span>$this</span>->language->get<span>(</span><span>'text_home'</span><span>),</span><span>'href'</span> => <span>$this</span>->url-><span>link</span><span>(</span><span>'common/home'</span><span>)</span><span>);</span><span>$data</span><span>[</span><span>'breadcrumbs'</span><span>][]</span> = <span>array</span><span>(</span><span>'text'</span> => <span>$this</span>->language->get<span>(</span><span>'text_account'</span><span>),</span><span>'href'</span> => <span>$this</span>->url-><span>link</span><span>(</span><span>'account/account'</span><span>,</span><span>''</span><span>,</span><span>'SSL'</span><span>)</span><span>);</span><span>$data</span><span>[</span><span>'breadcrumbs'</span><span>][]</span> = <span>array</span><span>(</span><span>'text'</span> => <span>$this</span>->language->get<span>(</span><span>'text_login'</span><span>),</span><span>'href'</span> => <span>$this</span>->url-><span>link</span><span>(</span><span>'account/login'</span><span>,</span><span>''</span><span>,</span><span>'SSL'</span><span>)</span><span>);</span><span>$data</span><span>[</span><span>'heading_title'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'heading_title'</span><span>);</span><span>$data</span><span>[</span><span>'text_new_customer'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'text_new_customer'</span><span>);</span><span>$data</span><span>[</span><span>'text_register'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'text_register'</span><span>);</span><span>$data</span><span>[</span><span>'text_register_account'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'text_register_account'</span><span>);</span><span>$data</span><span>[</span><span>'text_returning_customer'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'text_returning_customer'</span><span>);</span><span>$data</span><span>[</span><span>'text_i_am_returning_customer'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'text_i_am_returning_customer'</span><span>);</span><span>$data</span><span>[</span><span>'text_forgotten'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'text_forgotten'</span><span>);</span><span>$data</span><span>[</span><span>'entry_email'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'entry_email'</span><span>);</span><span>$data</span><span>[</span><span>'entry_password'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'entry_password'</span><span>);</span><span>$data</span><span>[</span><span>'button_continue'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'button_continue'</span><span>);</span><span>$data</span><span>[</span><span>'button_login'</span><span>]</span> = <span>$this</span>->language->get<span>(</span><span>'button_login'</span><span>);</span><span>if</span><span>(</span><span>isset</span><span>(</span><span>$this</span>->error<span>[</span><span>'warning'</span><span>]))</span> {
            <span>$data</span><span>[</span><span>'error_warning'</span><span>]</span> = <span>$this</span>->error<span>[</span><span>'warning'</span><span>];</span>
        } <span>else</span> {
            <span>$data</span><span>[</span><span>'error_warning'</span><span>]</span> = <span>''</span><span>;</span>
        }

        <span>$data</span><span>[</span><span>'action'</span><span>]</span> = <span>$this</span>->url-><span>link</span><span>(</span><span>'account/login'</span><span>,</span><span>''</span><span>,</span><span>'SSL'</span><span>);</span><span>$data</span><span>[</span><span>'register'</span><span>]</span> = <span>$this</span>->url-><span>link</span><span>(</span><span>'account/register'</span><span>,</span><span>''</span><span>,</span><span>'SSL'</span><span>);</span><span>$data</span><span>[</span><span>'forgotten'</span><span>]</span> = <span>$this</span>->url-><span>link</span><span>(</span><span>'account/forgotten'</span><span>,</span><span>''</span><span>,</span><span>'SSL'</span><span>);</span></code>

実際、ビュー ファイルに配置できる既存のフレームワーク機能では非常に面倒です。

ビュー ファイルの先頭:

<code><span><?php</span><span>$lang</span> = <span>$this</span>->registry->get<span>(</span><span>'language'</span><span>);</span><span>//加载语言包管理对象</span><span>$url</span> = <span>$this</span>->registry->get<span>(</span><span>'url'</span><span>);</span><span>//加载url对象</span><span>$this</span>->language<span>(</span><span>'common/footer'</span><span>);</span><span>//载入语言包</span><span>?></span>
<footer>
  <div <span>class</span>=<span>"container"</span>>
    <div <span>class</span>=<span>"row"</span>>
      <<span>?</span>php <span>if</span><span>(</span><span>$informations</span><span>)</span> { <span>?></span>
      <div <span>class</span>=<span>"col-sm-3"</span>>
        <h5><<span>?</span>php <span>echo</span><span>$lang</span>->get<span>(</span><span>'text_information'</span><span>);</span><span>?></span></h5>
        <ul <span>class</span>=<span>"list-unstyled"</span>>
          <<span>?</span>php <span>foreach</span><span>(</span><span>$informations</span><span>as</span><span>$information</span><span>)</span> { <span>?>
          <li><a href=<span>"<?php echo </span><span>$information</span><span>[&#39;href&#39;]; ?>"><<span>?</span>php <span>echo</span><span>$information</span><span>[</span><span>&#39;title&#39;</span><span>];</span><span>?></a></li>
          <<span>?</span>php } <span>?>
        </ul>
      </div>
      <<span>?</span>php } <span>?></code>

これにより、コントローラーはそのような退屈なことを心配する必要がなくなり、ビジネス ロジックとコア データの呼び出しに集中できます。

上記は、github コンテンツを含む OpenCart に関する小さな提案を紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

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