プロジェクト

全般

プロフィール

Bug(バグ) #3121

完了

三項演算子の二項目を省略した記述はPHP5.2環境で動作しない

守 手嶋 さんが12年以上前に追加. 7年以上前に更新.

ステータス:
Won't fix(対応せず)
優先度:
Low(低め)
担当者:
対象バージョン:
開始日:
2012-07-20
期日:
進捗率:

0%

予定工数:
3.6 で発生するか:
No (いいえ)
3.8 で発生するか:
Yes (はい)

説明

概要

三項演算子の二項目を省略した記述はPHP5.2環境で動作しない

具体的には下記コード部分がこれに該当する.

lib/util/opActivityQueryBuilder.class.php

 72   public function includeFriends($target_member_id = null)
 73   {
 74     $this->include['friend'] = $target_member_id ?: $this->viewerId;
 75     return $this;
 76   }

apps/api/lib/helper/opJsonApiHelper.php

134     'name' => $community->getName(),
'category' => (string)$community->getCommunityCategory() ?: null,
\136     'community_url' => $communityUrl,

原因

三項演算子の二項目を省略した形で記述できるのは PHP 5.3 以降であるため、 PHP 5.2 環境では利用することができない.

参考URL: http://php.net/manual/ja/language.operators.comparison.php

修正内容

diff --git a/apps/api/lib/helper/opJsonApiHelper.php b/apps/api/lib/helper/opJsonApiHelper.php
index e5fd560..c460778 100644
--- a/apps/api/lib/helper/opJsonApiHelper.php
+++ b/apps/api/lib/helper/opJsonApiHelper.php
@@ -139,7 +139,7 @@ function op_api_community($community)
   return array(
     'id' => $community->getId(),
     'name' => $community->getName(),
-    'category' => (string)$community->getCommunityCategory() ?: null,
+    'category' => $community->getCommunityCategory() ? $community->getCommunityCategory()->getName() : null,
     'community_url' => $communityUrl,
     'community_image_url' => $communityImage,
     'joining' => $communityMember ? !$communityMember->getIsPre() : false,
diff --git a/lib/util/opActivityQueryBuilder.class.php b/lib/util/opActivityQueryBuilder.class.php
index 6841e90..661dec5 100644
--- a/lib/util/opActivityQueryBuilder.class.php
+++ b/lib/util/opActivityQueryBuilder.class.php
@@ -71,7 +71,7 @@ class opActivityQueryBuilder

   public function includeFriends($target_member_id = null)
   {
-    $this->include['friend'] = $target_member_id ?: $this->viewerId;
+    $this->include['friend'] = $target_member_id ? $target_member_id : $this->viewerId;
     return $this;
   }

元本文

三項演算子の省略形がPHP5.2で動作しないので、動作するように変更する。
厳密にはバグではないが、これだけの理由でPHP5.3縛りにしてしまうのはもったいない。安定版中に対応する。
すなわち、OpenPNE3.8の対象バージョンはPHP5.2以上である、ということを定義する。

例 {OpenPNE3.8.0}/apps/api/lib/helper
opJsonApiHelper.php
パラメータ省略は、5.3から可能
135行目
修正前
'category' => (string)$community->getCommunityCategory() ?: null,
修正後
'category' => (string)$community->getCommunityCategory() ? $community->getCommunityCategory() : null,


関連するチケット 1 (0件未完了1件完了)

関連している OpenPNE 3 - Backport(バックポート) #3178: 三項演算子の二項目を省略した記述はPHP5.2環境で動作しないFixed(完了)Youichi Kimura2012-07-20

操作

Yuma Sakata さんが約12年前に更新

  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.8.2 に変更
  • 3.8 で発生するかUnknown (未調査) にセット

Yuma Sakata さんが約12年前に更新

  • 対象バージョンOpenPNE 3.8.2 から OpenPNE 3.9.0-old に変更

Youichi Kimura さんが約12年前に更新

Youichi Kimura さんが約12年前に更新

・json_encodeのPRETTY_PRINT

については #3026 にて既に修正されているため、

・三項演算子の省略形

のみを当チケットでの修正対象とします。

Youichi Kimura さんが約12年前に更新

  • 3.8 で発生するかUnknown (未調査) から Yes (はい) に変更

Youichi Kimura さんが約12年前に更新

  • 担当者Youichi Kimura にセット

Youichi Kimura さんが約12年前に更新

  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 cfcc95b7a960e0c64bad54c494b9e398981d55a1 で適用されました。

Yuya Watanabe さんが約12年前に更新

  • 題名PHP5.2環境で動作するようにする から 三項演算子の二項目を省略した記述はPHP5.2環境で動作しない に変更
  • 説明 を更新 (差分)

Yuya Watanabe さんが約12年前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

差し戻し内容

コーディング規約違反. http://www.openpne.jp/coding-standards-ja/

関数およびメソッド:return 文の直前には可読性向上のために空行を入れるべきです
変数:変数名に含めることができるのは英数字のみです。アンダースコアを使用してはいけません。

lib/util/opActivityQueryBuilder.class.php

 72   public function includeFriends($target_member_id = null)
 73   {
 74     $this->include['friend'] = $target_member_id ? $target_member_id : $this->viewerId;
 75     return $this;
 76   }

Youichi Kimura さんが約12年前に更新

  • ステータスRejected(差し戻し) から Accepted(着手) に変更
  • 進捗率50 から 0 に変更

Youichi Kimura さんが約12年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

28c087935d5eb411ded3b902333c30608ef2a845 にて、note-9 で指摘されているコーディング規約違反に該当する箇所を修正しました。

Yuya Watanabe さんが約12年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

Chiharu Nakajima さんがほぼ10年前に更新

  • 優先度Normal(通常) から Low(低め) に変更

このチケットの内容は下記の項目に該当する不具合であるため、一旦優先度を下げます。
・一部の特殊なサーバー環境のみで発生する不具合

isao sano さんが7年以上前に更新

  • ステータスPending Testing(テスト待ち) から Won't fix(対応せず) に変更
  • 進捗率70 から 0 に変更

OpenPNE 3.8.2 にて対応済みであったため、対応せずとします。

他の形式にエクスポート: Atom PDF