ec-cube / ec-cube Goto Github PK
View Code? Open in Web Editor NEWEC-CUBE is the most popular e-commerce solution in Japan
Home Page: https://www.ec-cube.net
License: Other
EC-CUBE is the most popular e-commerce solution in Japan
Home Page: https://www.ec-cube.net
License: Other
以下の議論でも挙がっていますが、
#7 (comment)
#7 (comment)
DIコンテナを使えば、依存関係も上手く制御できると思います。(テストも書きやすくなります。インターフェースを考えなおす良い機会にもなるでしょう。)是非、検討して頂ければ幸いです。
app/cache/ 以下はそれぞれのロジックで自動的にディレクトリが作られるので、トラブルやインストールの簡素化のためにも、cache
のみをパーミッション777で置いておくようにしてはどうでしょうか。
私が、2/13(金)目途で、以下の構成の注文ロジックのモックを作成します。
その後、WIPとしてPR投げますので、皆様にモックをレビューしていただきたいと思います。
レビューを重ね、PRが問題ないと判断でき次第、そのPRを本リポジトリにマージします。
その後、マージしたPRをサンプルコードとして提示したいと思います。
Sessino, DataBaseについては、どの機能を開発するにあたっても、必要になってくると思いますので、
随時見直しをしていきます。
疑問に思ったり、変えたいときは、別途Issueをたててください。
テーブルについているprefix「dtb_」「 mtb_」をはずす
必須条件
理想
候補
直接実行を考慮
DoctrineORM DoctrineDBALなどのORMの利用を積極的に検討
懸念点・判断基準は以下。
候補は以下?他に候補があれば、コメントください。
しばらくインストーラーも動作しない感じで、実際の動作を試せていないのですが、どんな感じで環境構築するのでしょうか?
ただし、id, name, rank以外の構造のmtb_(mtb_constants / mtb_zipなど)は別table(constants / zip)とする
Silexベースのコードへのリファクタリングの進捗とその疑問点などをまとめるIssue
Wikiに、[EC-CUBE3 機能要件]と[開発要件]の2つのページを作成いたしました。
[EC-CUBE3 機能要件]は変更が入ることはほとんどありません。
[開発要件]について、意見をいただきたく本Issueを作成いたしました。
[開発要件]は本リリースまで適宜ブラッシュアップをしていきたく、皆様のご意見をこちらで集約させていただきたいと思います。
2.13系にデフォルトで含まれている機能だが、
を、デフォルトでインストールされているプラグインとして扱う
data/ClassLoader.phpを作成し、全classをautoloadできるようにする
Travis CI
https://travis-ci.org/EC-CUBE/ec-cube
Coveralls
https://coveralls.io/r/EC-CUBE/ec-cube
Coveralls については連携がなかったようです。
また、バッジも貼り付けてはどうでしょうか。
[![Build Status](https://travis-ci.org/EC-CUBE/ec-cube.svg)](https://travis-ci.org/EC-CUBE/ec-cube)
[![Coverage Status](https://img.shields.io/coveralls/EC-CUBE/ec-cube.svg)](https://coveralls.io/r/EC-CUBE/ec-cube)
そもそも設置する/しないの話から皆様のご意見を頂戴できればと思います。
通常利用しているデザインテンプレートが存在しない場合に、他のデザインテンプレートを探す仕組みを検討中
3系では、アップデートに対応したいので、以下の事が考えられる
順位 | パス案 | 説明 | 生成イメージ |
---|---|---|---|
1 | /template/CCC | ユーザーが指定したテンプレート | 管理画面から編集可能 |
2 | /src/Eccube/Resource/CCC | ユーザーが指定したテンプレートの原本 | オーナーズストアで買った状態そのまま |
3 | /plugin関係のファイル | プラグインが求めているテンプレート | プラグインで用意された原本 |
4 | /src/Eccube/Resource/default | EC-CUBE標準のテンプレートの原本 | 本体のアップデートで変更される。 |
改善したい点は数多く有りますが、ひとつだけ挙げるならこれです。
ページクラスからビジネスロジックを切り離し、処理の対象毎にまとめて Model クラスとして再構築します。
また、従来からのコードで Model と同様の働きをするクラスを Model として再定義します。
例)
SC_Product → ¥Model¥Product¥Product
SC_Helper_Category → ¥Model¥Product¥Category
SC_Helper_Purchase → ¥Model¥Order¥Order
SC_Customer → ¥Model¥Customer¥Customer
テンプレートエンジンをそもそも使うかどうか、
使うとすれば何を使うか
eccube_install.sh mysql
でインストールした場合に、 DBの文字エンコーディングが laten1 等になっていると文字化けしてしまう。
明示的に utf8 を指定した方が良い
OAuth 2.0?SAML?要検討
HTTP メソッドをリソースの操作とする。
例)/api/[リソース]/
GET ~/api/customer/
POST ~/api/customer/
パラメータはJSON形式で渡す。
~/api/customer/?json=
{
include: [ "id", "name", "*"], // 取得するカラム
filter: {
"name": ["test", "aaaa", "test example"], // name に test と example を両方含む
// -> where name = test or name = aaaa or (name = test and name = expamle)
"kana": ["hoge"]
// -> and kana = "hoge"
},
sort: {"id":"asc", "create_date":"desc"},
limit: 50,
offset: 100,
}
~/api/customer/?json=
{
include: [ {"name":"ほげほげ"}, {"kana":"ホゲホゲ"}]
}
~/api/customer/?json=
{
filter: {
"id": "1",
"name": "test example", // name に test と example を両方含む
"name": [ "1test", "example" ] // name が test または example に完全一致
},
include: [ {"name":"ほげほげ"}, {"kana":"ホゲホゲ"}]
}
~/api/customer/?json=
{
filter: {
"id": "1",
"name": "test example", // name に test と example を両方含む
"name": [ "1test", "example" ] // name が test または example に完全一致
}
}
パラメータはJSON形式で渡す。
APIの処理の結果 | ステータス・コード | Body |
---|---|---|
対象データの取得・削除に成功した場合 | 200 OK | 対象となるデータが格納される {success: true, customer:{"id":xxxx,…}, error_message: ""} |
対象データの追加に成功した場合 | 201 Created | {success: true, error_message: ""} |
対象データの更新に成功した場合 | 200 OK | {success: true, error_message: ""} |
リクエストに検証エラーが存在する場合 | 400 Bad Request | 検証エラー情報が格納される {success: false, error_message: "xxxx"} |
対象データが存在しない場合 | 404 Not Found | {success: true, error_message: ""} |
メソッド内で例外が発生した場合 | 500 Internal Server Error | エラー情報が格納される {success: false, error_message: "xxxx"} |
DocumentとしてFIXしてしまう前に、現在開発しているプラグインのフックポイントと、その実行順序について、覚書程度に記載します。
eccube.event.*.(before|after|finish)
eccube.event.app.before
eccube.event.app.after
eccube.event.controller.ROUTE.before
eccube.event.controller.ROUTE.after
eccube.event.controller.ROUTE.finish
eccube.event.render.before
$app['view']->render()
のときにEventが走る。ROUTE
は、 $request->attributes->get('_route')
で取得できる、ルーティング名
->bind('ここ')
eccube.event.app.before
eccube.event.controller.ROUTE.before
eccube.event.render.before
eccube.event.controller.ROUTE.after
eccube.event.app.after
eccube.event.controller.ROUTE.finish
同一のフックポイントを利用している場合は、EventSubscriberで定義した優先順位による
2.13 では、2つありましたが、まとめた方が良いのかなと。
個人的には、前者は Excel 方眼紙で勝手が悪かったので、最近は後者を重宝しています。
今後の保守方針に関して、Excel 直書きなのか、ツール生成なのかといった当たりも明確にしたほうが良いように感じます。(docs\ER-D\README.md みたいに、なっていると分かりやすいですね。)
EC-CUBE 上の用語との差異も散見するので、統一していくのも必要かと考えます。
合わせて、html\install\sql\comment_set_pgsql_2.13.sql の保守も課題でしょうか。
#22 あたりとも関わりますかね。
ログの処理を monolog を用いて行いましょう。
https://github.com/Seldaek/monolog
ルーティング機能やDBマイグレーション機能など、これだけの大幅な変更を加えるのであれば、いっそのことフレームワークの利用を検討してみては如何でしょうか。
今まで、EC-CUBEではDBのスキーマを変更した際にmigrationを作成していませんでしたが、今後は何からの形でcommitに含めませんか?
バージョンアップしやすいように開発することも安全なウェブシステムに重要ではないでしょうか。
ざっと作ったため、管理画面にログインできない状態です。
近々直しますので、開発されている方はそれまでeccube_install.shでインストールしてください。
$arrMaps = array(
array(
'method' => 'GET|POST',
'path' => '/',
'dir' => '',
'class' => 'index'
),
array(
'method' => 'GET|POST',
'path' => '/products/detail',
'dir' => 'products',
'class' => 'detail'
),
array(
'method' => 'GET|POST',
'path' => '/admin/',
'dir' => 'admin',
'class' => 'index'
),
array(
'method' => 'GET|POST',
'path' => '/admin/login',
'dir' => 'admin',
'class' => 'login'
),
);
.gitignore を作成します。
現在、歴史的経緯からとお見受けしますが、test
とtests
に分かれておりわかりにくいと思います。
テストのカバレッジもあまり良くない状況だと思います。
こちらについて、何か整備指針などはありますでしょうか。
HTTP_URL
の最後に / が無いAppVoyer だとテストがこけるのでappvoyer.yml
の修正が必要です。
action()内では、カウンタ変数以外のローカル変数を許容しない
必ず、クラス変数とすること
βリリースまでは、開発スピードを重視し、以下をテスト基準にしようと思いますが、いかがでしょうか?
特に、src\Eccube\Service\は、ビジネスロジックがほぼすべて集約されるため、最重要と考えています。
そのため、src\Eccube\Service\以下は、カバレッジ100%にしていきたいです。
上記に含まれていない、
βリリース以降では、上で挙げたもの以外も対象にしていきたいと思います。
👍 や 👎 だけでもコメントいただけると判断しやすいです。
dtb_products_class.product_type_id
初期で使われていない0が初期値。データ移行で不正なデータが発生して発覚。とりあえず削除する。1でも良い気もする。
今後のDirectory Structureについて、何か指針はありますでしょうか。
大幅に構造が変わるようですので、わかりやすく、トレンドな感じにまとめてはいかがでしょうか。
前々からやりたかった事で、やれと言われたのでこの機会にやっちゃいます。
前に合宿でとりあえず商品一覧動くまでやったのがコレです。
chihiro-adachi#2
データ構造の柔軟性と、検索や表示の高速化を実現するために、concrete5と同じ様な仕組みにしたいと思っています。( こんなんです > https://github.com/concrete5/concrete5-5.7.0/blob/develop/web/concrete/src/Page/PageList.php )
ざっくり言うと、正規化しまくって検索用のインデックステーブルを作る感じです。
これにより、管理画面側に商品属性の管理機能が必要になります。
それと、現在のdtb_produtsは商品マスタではなく、dtb_product_classが商品マスタに該当するという認識があるので、
dtb_product_class > dtb_produts
にしています。
とりあえずこの方針でやって良いとは言われたのですが、皆さんのご意見も聞きたいので、よろしくお願いします。
まずは 2.13.x ベースのものを追加
購入フローから注文完了までのビジネスロジックを @chihiro-adachi と二人で進めていってます。
SC_XXXX系の登場人物が多いため乗せ換えが難しく、なおかつ、今のロジックのまま開発を進めるより、オブジェクト設計・フロー設計を合わせて見なおしたほうがいいと判断したため、リファクタ込で進めていっております。
具体的には、以下の作成をしています。
乗せ換えフェーズの原則から外れるイレギュラーな対応となるため、周知の意味で取り急ぎIssueをたてさせていただきます。
購入フローのステップを短縮化する。
eccube_install.shを環境に合わせて編集し、スクリプトを実行したにもかかわらず、
http://xxx.xxx.xxx/
(eccube_install.shに記述したURL)にアクセスすると、http://test.local/にアクセスしてしまい、エラーとなってしまします。
他に修正すべきファイルがあるのでしょうか?
EC-CUBE3β版のインストールを行いましたが404エラーとなりadminが表示されません。
http://[URL]/html/adminと入力しています。
商品購入のトップ画面は表示されます。
html/adminを認識していないようですが、インストールを失敗しているのでしょうか?
html/adminの中はload_module_config.php load_plugin_config.php require.php cssとなっています。
パスか環境設定の問題だと思うのですが、対処方法があればご教示下さい。
よろしくお願いします。
なお、環境は下記の通りです。
centOS7
apache 2.4.6
PHP 5.4.16
MariaDB
取り急ぎ把握したいのは、PostgreSQL のバージョンなのですが、諸々どこかにまとまっていましたっけ?
インストールマニュアルがないため、作成する。
一般的なRESTful URLでは /
をつけない方が多いと思いますが、SymfonyのSecurity を使った際に /admin
のみだと /adminxxx
など前方一致となるため、 2系の index.php
の省略の場合には後ろの /
までをURLとした方が良いかと思います。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.