OpenCart についての小さな提案
OpenCart は古いオープンソースの無料 B2C 電子商取引システムです。最近、github でホストされているそのプロジェクトを観察しましたが、今でも非常に活発で、毎日バグが報告されていることがわかりました。
予備的な確認では、バックグラウンドで複数のストアの管理をサポートしており、同じ商品でも異なるストアでは異なる価格を設定でき、ストア間で異なるドメイン名をバインドできることがわかります。ここはかなりユニークな場所です。
しかし、そのコードを見ると、何年にもわたってほとんど変更されておらず、コードの役割分担に進化の感覚がないことがわかりました。
言語、リンク、現在のパスなど、ビューによって構築されるべき大量のデータは、
フロントエンドのログイン ページと同様に、コントローラーに配置されます。 :
1 | <code class = "sourceCode php" ><span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'breadcrumbs'</span><span class = "ot" >]</span> = <span class = "fu" > array </span><span class = "ot" >();</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'breadcrumbs'</span><span class = "ot" >][]</span> = <span class = "fu" > array </span><span class = "ot" >(</span> <span class = "st" >'text'</span> => <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'text_home'</span><span class = "ot" >),</span> <span class = "st" >'href'</span> => <span class = "kw" > $this </span>->url-><span class = "fu" >link</span><span class = "ot" >(</span><span class = "st" >'common/home'</span><span class = "ot" >)</span> <span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'breadcrumbs'</span><span class = "ot" >][]</span> = <span class = "fu" > array </span><span class = "ot" >(</span> <span class = "st" >'text'</span> => <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'text_account'</span><span class = "ot" >),</span> <span class = "st" >'href'</span> => <span class = "kw" > $this </span>->url-><span class = "fu" >link</span><span class = "ot" >(</span><span class = "st" >'account/account'</span><span class = "ot" >,</span> <span class = "st" >''</span><span class = "ot" >,</span> <span class = "st" >'SSL'</span><span class = "ot" >)</span> <span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'breadcrumbs'</span><span class = "ot" >][]</span> = <span class = "fu" > array </span><span class = "ot" >(</span> <span class = "st" >'text'</span> => <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'text_login'</span><span class = "ot" >),</span> <span class = "st" >'href'</span> => <span class = "kw" > $this </span>->url-><span class = "fu" >link</span><span class = "ot" >(</span><span class = "st" >'account/login'</span><span class = "ot" >,</span> <span class = "st" >''</span><span class = "ot" >,</span> <span class = "st" >'SSL'</span><span class = "ot" >)</span> <span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'heading_title'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'heading_title'</span><span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'text_new_customer'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'text_new_customer'</span><span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'text_register'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'text_register'</span><span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'text_register_account'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'text_register_account'</span><span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'text_returning_customer'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'text_returning_customer'</span><span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'text_i_am_returning_customer'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'text_i_am_returning_customer'</span><span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'text_forgotten'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'text_forgotten'</span><span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'entry_email'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'entry_email'</span><span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'entry_password'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'entry_password'</span><span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'button_continue'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'button_continue'</span><span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'button_login'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->language->get<span class = "ot" >(</span><span class = "st" >'button_login'</span><span class = "ot" >);</span> <span class = "kw" > if </span> <span class = "ot" >(</span><span class = "fu" >isset</span><span class = "ot" >(</span><span class = "kw" > $this </span>->error<span class = "ot" >[</span><span class = "st" >'warning'</span><span class = "ot" >]))</span> { <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'error_warning'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->error<span class = "ot" >[</span><span class = "st" >'warning'</span><span class = "ot" >];</span> } <span class = "kw" > else </span> { <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'error_warning'</span><span class = "ot" >]</span> = <span class = "st" >''</span><span class = "ot" >;</span> } <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'action'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->url-><span class = "fu" >link</span><span class = "ot" >(</span><span class = "st" >'account/login'</span><span class = "ot" >,</span> <span class = "st" >''</span><span class = "ot" >,</span> <span class = "st" >'SSL'</span><span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'register'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->url-><span class = "fu" >link</span><span class = "ot" >(</span><span class = "st" >'account/register'</span><span class = "ot" >,</span> <span class = "st" >''</span><span class = "ot" >,</span> <span class = "st" >'SSL'</span><span class = "ot" >);</span> <span class = "kw" > $data </span><span class = "ot" >[</span><span class = "st" >'forgotten'</span><span class = "ot" >]</span> = <span class = "kw" > $this </span>->url-><span class = "fu" >link</span><span class = "ot" >(</span><span class = "st" >'account/forgotten'</span><span class = "ot" >,</span> <span class = "st" >''</span><span class = "ot" >,</span> <span class = "st" >'SSL'</span><span class = "ot" >);</span></code>
|
ログイン後にコピー
は実際には、既存のフレームワーク機能の下ではビュー ファイルに配置できます。
ビュー ファイルの先頭:
1 | <code class = "sourceCode php" ><span class = "kw" ><?php</span><span class = "kw" > $lang </span> = <span class = "kw" > $this </span>->registry->get<span class = "ot" >(</span><span class = "st" >'language'</span><span class = "ot" >);</span><span class = "co" >
|
ログイン後にコピー
このようにして、コントローラーはそのような退屈なことを心配する必要がなくなり、ビジネスに集中できますロジックとコア データと呼ばれます。