タグ付けされた質問 「coding-standards」

5
Magentoコーディング標準
私は最近Magento、Code snifferとの広範囲にわたる作業を開始しました。どの標準に従うべきかを知りたいです。 Zendコーディング標準を試しましたが、80行の制限を使用したくありません。コアでも使用されていません。 その後、CS2標準を試しましたが_、さまざまな関数や、名前_がなく名前が含まれていないクラス名が原因で機能しません。 それで、コアコードが100%に準拠している別の規格はありますか?そうでない場合、magentoに独自のコーディング標準を設定すべきではありませんか?独自のstackexchangeサイトがあり、いくつかの明確に定義されたコーディング標準が拡張開発者によって使用されることを歓迎します。

2
Magento ECG Coding Standardで多くのPHP関数が許可されないのはなぜですか?
Magento ECG Coding Standardは、Magento 1拡張の標準として(少なくとも一種)公式であるようです: https://github.com/magento-ecg/coding-standard しかし、私はすべてのルールの背後にある理由を理解していません。また、メッセージだけのコードスニッファールールはあまり役に立ちません。標準に関する詳細なドキュメントはありますか?一般的なベストプラクティスと開発者ガイドは知っていますが、これらのコーディング標準に関する具体的な情報は見つかりません。 私が最も悩むのは、PHP関数を使用しないことに関する厳格さです。 たとえば、PHP関数に関連するすべてのファイルシステムがすべて禁止されているのはなぜですか? 私はあなたが使用することになっている、と思うVarien_Io_File、Varien_File_Objectなどそれでもコア開発者は、すべてのVarienクラスを認識していないと、あなたは、多くの場合でのようなものを見つけますMage_ImportExport_Model_Import_Adapter_Csv: $this->_fileHandler = fopen($this->_source, 'r'); そのため、多くの場合、コアは最良の例ではありません。 他のIMHOの疑わしい禁止機能: mb_parse_str parse_str parse_url base64_decode ええ、それはバックドアで使用されていますが、禁止evalは十分であり、バイナリデータのエンコードなどの合法的なユースケースがあります。そしてjson_decode(これは禁じられていませんが)これ以外に利用できるコアヘルパーはありません。 ソース:https : //github.com/magento-ecg/coding-standard/blob/master/Sniffs/Security/ForbiddenFunctionSniff.php 基本的に、私の質問は次のように要約されます:この標準はどこに文書化されていますか?および/または「これらのネイティブPHP関数の代わりに使用するもの」のリストはありますか?

2
Magento 2-マジックゲッターを使用/回避するための良い習慣ですか?
Varien_Object(M1)およびDataObject(M2)のマジックゲッターは一般的な方法ですが、Magento 2では使用するのが間違っているように感じます。 良い: 読み書きが簡単 悪い キーに数字を使用すると問題が発生します(Magento 2:コレクションのフィールドを取得する別の方法、またはラクダケースを使用してカスタム製品属性を取得するを参照)。 コード分​​析ツールが存在しないメソッドについて文句を言う 質問 Magento 2には、2つの新しいメソッドがあります。 getDataByKey($key) getDataByPath($path) まだ使用する正当な理由getData($key)や魔法のゲッターはありますか? 編集: @Vinaiありがとう。@method私のアプローチはかなり異なっていたので、私は方法に言及しませんでした。 IDEに役立つだけで、他のものには影響しません。 いくつかのmergedf PRがあります。これは、ループの(int)代わりにキャストしintval()たり、ループの外に配列サイズを取得したり(小さな配列であっても)するような「マイクロ最適化」です。 一方、 マリウスが説明したように、いくつかの「オーバーヘッド」を持つ魔法のゲッター.... strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_')); getData($key) mehtodsも2-3の追加チェックが必要です... if ('' === $key) { if (strpos($key, '/')) { if ($index !== null) { 独自のコードの場合、実際のメソッドを好むことに完全に同意しますが、同じケースではおそらくそうではありません...たとえば、カスタムイベントを作成しました... $value = $observer->getVar_1(); $value = $observer->getData('var_1'); $value = …


1
大量のアクションでループの保存を回避する
CMSページの場合と同様のインライン編集アクションを含む独自のCRUDモジュールを作成しました。 すべてが正常に動作しますが、EcgM2標準で phpsnifferを実行すると、次の警告が表示されます。 ループで検出されたモデルLSDメソッドsave() どうすればこれを回避できますか? 注:上記のリンクされたコアファイルを「スニッフィング」すると、同じ警告が表示されます。 ここにexecute誰かがそれを必要とする場合の私の方法があります。しかし、それはCMSページコントローラーからのものと非常に似ています public function execute() { /** @var \Magento\Framework\Controller\Result\Json $resultJson */ $resultJson = $this->jsonFactory->create(); $error = false; $messages = []; $postItems = $this->getRequest()->getParam('items', []); if (!($this->getRequest()->getParam('isAjax') && count($postItems))) { return $resultJson->setData([ 'messages' => [__('Please correct the data sent.')], 'error' => true, ]); } foreach (array_keys($postItems) …

5
コードスニファーで未使用のパラメーターを無視する
カスタム拡張機能でEcgM2標準を使用してコードスニファーを実行していますが、警告が表示されます メソッドパラメータ$contextは使用されません 以下のためのInstallSchema.phpファイル。 この警告を消すにはどうすればよいですか? 私のメソッドは次のようになります(SuppressWarnings上部にあるに注意してください): /** * {@inheritdoc} * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function install(SchemaSetupInterface $setup, ModuleContextInterface $context) { //my install script here that does not use the parameter $context }

3
ECGコンプライアンス:方法
以下のようなものがあるcoding standardためMagentoの1と呼ばれます、ECG使用すべきではない、多くの物事は避けるべきどこかの方法が。 コードで「エラー」または「警告」をスローするすべてのケースをカバーするリストを作成してみましょう。 以下に、考えられるすべての警告のリストを示します。私はこの投稿を定期的に更新し、与えられた回答と投票された回答へのリンクを追加します。 注意:回答の重複を避けてください;) ダウンロード:https : //github.com/magento-ecg/coding-standard ECGスニフ クラス Mysql4 Mysql4クラスは廃止されました。 リソースモデルを書き換えるときに非推奨の「Mysql4」クラスを処理する方法 リソースフォルダーをMysql4からResourceに変更すると、Magento 1.9モジュールが奇妙に壊れる オブジェクトのインスタンス化 Magentoでは、オブジェクトの直接インスタンス化(クラス%s)は推奨されていません。 protected $disallowedClassPrefixes = array( 'Mage_', 'Enterprise_', ); ... PHP 後藤 gotoの使用はお勧めしません。 ... 名前空間 "'。$ exceptionClassName。'"クラスの名前空間が指定されていません。 ... プライベートクラスメンバー プライベートクラスメンバーが検出されました。 ... Var プライベートクラスメンバーが検出されました。 ... パフォーマンス コレクション数 Magentoデータコレクションの不要な読み込み。代わりにgetSize()メソッドを使用してください。 コレクションにアイテムがあるかどうかを確認するにはどうすればよいですか? FetchAll fetchAll()は、大きなデータセットの場合、メモリ効率が悪い場合があります。 ... GetFirstItem getFirstItem()は、コレクションのロード結果を1つのアイテムに制限しません。 GetFirstItem- https: …

4
ファイルシステムのベストプラクティス
ファイルシステムからファイルを読み取る必要があるMagento 2拡張機能に取り組んでいます。 ECGM2標準を使用してphpスニファを実行すると、basenameまたはのような関数を使用しているという事実について文句を言いdirnameます。 関数dirname()の使用は禁止されています または 関数basename()の使用は禁止されています 同じ効果を得るには、これらの代わりにどのラッパーを使用する必要がありますか? [編集] ここにいくつかのコードがありますが、質問にはそれほど関係ありません。 クラスを拡張するコレクションクラスがあり\Magento\Framework\Data\Collection\Filesystem、グリッド(ui-components)にこのコレクションを一覧表示したいのですが、グリッド内のアクションの1つはダウンロードアクションです。 このため、ファイルの実際の名前を取得して、ダウンロードアクションに送信できるようにする必要があります。 // here $file is dynamic and it can be // folder/filename.xml or folder/subfolder/file.tar.gz //so there is no strict number of folders and subfolders. $file = $downloader->getRelativePath($packageName); $relativeFile = UmcFilesystem::VAR_DIR_NAME . '/' .$file; $absoluteFile = $rootDir->getAbsolutePath($relativeFile); if ($rootDir->isFile($relativeFile) && $rootDir->isReadable($relativeFile)){ …

1
Magento 2:PSRコンプライアンスに関するM2のステータスは何ですか?
だから、公式ドキュメントによると、私は、Magentoの2は、PSR-1とPSR-2に準拠していることを理解しています。 Magento 2は他のMagento 2に準拠しているか(または準拠する予定か)疑問に思っています。 PSR-3:ロガーインターフェイス PSR-4:オートローディング標準 PSR-6:キャッシングインターフェイス PSR-7:HTTPメッセージインターフェイス 私が期待する答えは、PSRドラフトを検討することもできます

1
静的テストのチェックとは何ですか?
モジュールをビルドした後、実行してみましたbin/magento dev:tests:run static。 これは私のコードにいくつかの問題を報告しましたが、このテストを実行するときに何がチェックされるのか正確にはわかりません。 公式ドキュメントによれば 静的コード分析は、PHPコードがMagento 2コーディング標準とベストプラクティスに従っていることを確認します。これらは通常、bin / magentoツールを使用した継続的インテグレーション中に実行されます。 しかし、それはそれほど意味がありません。 これまでに見つけたものです。 の存在 composer.json の存在 README.md の存在 licence.txt コンストラクター引数の順序は、引数の親の順序と一致します。 ほかに何か?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.