前提・実現したいこと
PHP(Symfony)で既存のシステムのsymfonyアップデート(2.8->3.0)を行っております。
再度、composer updateをした際、下記のエラーが出ました。
また、symfonyのバージョンを上げる際に該当コードの部分は修正しておりません。
原因がどこにあるのか教えていただければと思います。
発生している問題・エラーメッセージ
PHP Parse error: syntax error, unexpected 'class' (T_CLASS), expecting variable (T_VARIABLE) or '$' in /home/vagrant/Symfony/src/Ahi/Sp/AdminBundle/Controller/BaseArticleController.php on line 46
該当のソースコード
PHP
1//BaseArticleController.php 2 protected function indexAction(Request $request) 3 { 4 // 検索フォームを作成(下の::classの部分がエラーの該当箇所) 5 $searchForm = $this->createForm(new ArticleSearchType::class, null, array( 6 "action" => $this->generateUrl($this->indexRoute), 7 "login_staff" => $this->getStaff(), 8 )); 9//他省略 10 }
PHP
1// ArticleSearchType.php 2 3/** 4* 記事検索用のフォームタイプ 5*/ 6class ArticleSearchType extends AbstractType 7{ 8 /** 9 * {@inheritdoc} 10 */ 11 public function buildForm(FormBuilderInterface $builder, array $options) 12 { 13 $loginStaff = $options['login_staff']; 14 $shop = $options['login_staff']->getShop(); 15 // 詳細検索 16 $builder->add("advanced", "hidden", array( 17 "required" => false, 18 )); 19 20 // 記事種別 21 $builder->add("articleType", "hidden", array( 22 "required" => false, 23 )); 24 25 // 記事ステータス 26 $builder->add("articleStatus", "hidden", array( 27 "required" => false, 28 )); 29 30 // 本部スタッフでログインしている場合はブランド、ショップで検索可 31 if ($loginStaff->isHq()) { 32 // ブランド 33 $builder->add("brand", "brandChoice", array( 34 "required" => false, 35 )); 36 37 // ショップ 38 $builder->add("shop", "shopChoice", array( 39 "required" => false, 40 )); 41 } 42 43 // 記事ID 44 $builder->add("id", "text", array( 45 "required" => false, 46 )); 47 48 // 検索ワード 49 $builder->add("word", "text", array( 50 "required" => false, 51 "mb_convert_kana_option" => null, 52 )); 53 54 // 検索ボタン 55 $builder->add('search', 'submit'); 56 57 // サブミットされたデータによりフォームを動的に生成する 58 $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use ($shop) { 59 $data = $event->getData(); 60 $form = $event->getForm(); 61 62 // 記事種別 63 $articleType = ""; 64 if (isset($data["articleType"]) && in_array($data["articleType"], Parameters::getArticleTypeKeys())) { 65 $articleType = $data["articleType"]; 66 } 67 $data["articleType"] = $articleType; 68 69 // 記事ステータス 70 $articleStatus = ""; 71 if (isset($data["articleStatus"]) && in_array($data["articleStatus"], Parameters::getArticleStatusKeys())) { 72 $articleStatus = $data["articleStatus"]; 73 } 74 $data["articleStatus"] = $articleStatus; 75 76 $event->setData($data); 77 78 // 詳細検索のフォームを追加 79 if (isset($data["advanced"]) && $data["advanced"]) { 80 // 投稿者 81 $form->add("author", "staffChoice", array( 82 "required" => false, 83 "search_params" => array("shop" => $shop), 84 )); 85 86 // 投稿日時 87 $form->add("publishDateTimeFrom", "datetime", array( 88 "required" => false, 89 "widget" => "single_text", 90 "format" => "yyyy/MM/dd HH:mm", 91 "attr" => array("class" => "formDateTime"), 92 )); 93 $form->add("publishDateTimeTo", "datetime", array( 94 "required" => false, 95 "widget" => "single_text", 96 "format" => "yyyy/MM/dd HH:mm", 97 "attr" => array("class" => "formDateTimeTo"), 98 )); 99 100 // 有効期限 101 $form->add("expireDateTimeFrom", "datetime", array( 102 "required" => false, 103 "widget" => "single_text", 104 "format" => "yyyy/MM/dd HH:mm", 105 "attr" => array("class" => "formDateTime"), 106 )); 107 $form->add("expireDateTimeTo", "datetime", array( 108 "required" => false, 109 "widget" => "single_text", 110 "format" => "yyyy/MM/dd HH:mm", 111 "attr" => array("class" => "formDateTimeTo"), 112 )); 113 114 // 記事種別が 全て or コーディネート or レコメンドアイテム の場合 115 if (in_array($articleType, array("", "coordinate", "recommend"))) { 116 // 着用者 117 $form->add("wearer", "staffChoice", array( 118 "required" => false, 119 "search_params" => array("shop" => $shop), 120 )); 121 122 // 品番 123 $form->add("itemNo", "text", array( 124 "required" => false, 125 )); 126 } 127 128 // 記事種別が 全て or ショップイベント or ブランド共通イベント の場合 129 if (in_array($articleType, array("", "shopevent", "brandevent"))) { 130 // イベント開始日時 131 $form->add("eventStartDateFrom", "datetime", array( 132 "required" => false, 133 "widget" => "single_text", 134 "format" => "yyyy/MM/dd HH:mm", 135 "attr" => array("class" => "formDateTime"), 136 )); 137 $form->add("eventStartDateTo", "datetime", array( 138 "required" => false, 139 "widget" => "single_text", 140 "format" => "yyyy/MM/dd HH:mm", 141 "attr" => array("class" => "formDateTimeTo"), 142 )); 143 144 // イベント終了日時 145 $form->add("eventEndDateFrom", "datetime", array( 146 "required" => false, 147 "widget" => "single_text", 148 "format" => "yyyy/MM/dd HH:mm", 149 "attr" => array("class" => "formDateTime"), 150 )); 151 $form->add("eventEndDateTo", "datetime", array( 152 "required" => false, 153 "widget" => "single_text", 154 "format" => "yyyy/MM/dd HH:mm", 155 "attr" => array("class" => "formDateTimeTo"), 156 )); 157 } 158 } 159 }); 160 } 161 162 /** 163 * {@inheritdoc} 164 */ 165 public function setDefaultOptions(OptionsResolver $resolver) 166 { 167 $resolver->setDefaults(array( 168 "method" => "GET", 169 "csrf_protection" => false, 170 "validation_groups" => false, 171 )); 172 173 $resolver->setRequired(array( 174 "login_staff", 175 )); 176 } 177 178 /** 179 * {@inheritdoc} 180 */ 181 public function buildView(FormView $view, FormInterface $form, array $options) 182 { 183 $loginStaff = $options['login_staff']; 184 $shop = $options['login_staff']->getShop(); 185 186 // 有効な記事種別 187 if ($loginStaff->isHq()) { 188 // 本部管理画面 189 $view->vars['enabledArticleType'] = array( 190 "" => "全て", 191 "brandevent" => "ブランドイベント", 192 "coordinate" => "コーディネート", 193 "recommend" => "レコメンドアイテム", 194 "diary" => "ダイアリー", 195 "shopevent" => "ニュース", 196 ); 197 } else { 198 // ショップ管理画面 199 $view->vars['enabledArticleType'] = array( 200 "" => "全て", 201 "coordinate" => "コーディネート", 202 "recommend" => "レコメンドアイテム", 203 "diary" => "ダイアリー", 204 "shopevent" => "ニュース", 205 ); 206 } 207 208 // 有効な記事ステータス 209 if ($loginStaff->isHq() or $shop->getApprovalFlg()) { 210 // 本部管理画面 or 承認フラグが有効なショップ管理画面 211 $view->vars["enabledArticleStatus"] = array( 212 "" => "全て", 213 "draft" => "下書き", 214 "pending" => "承認待ち", 215 "reject" => "非承認", 216 "publish" => "公開", 217 "hidden" => "非公開", 218 ); 219 } else { 220 // 承認フラグが無効なショップ管理画面 221 $view->vars["enabledArticleStatus"] = array( 222 "" => "全て", 223 "draft" => "下書き", 224 "publish" => "公開", 225 "hidden" => "非公開", 226 ); 227 } 228 } 229 230 /** 231 * {@inheritdoc} 232 */ 233 public function getName() 234 { 235 return "q"; 236 } 237} 238 239
試したこと
このエラーのよくある原因がphpのバージョンが低い (<5.4)ことのようですが、
PHPのバージョンは5.6.40であり、php -v
やphpinfo();
でもバージョンを確認しております。
補足情報(FW/ツールのバージョンなど)
CentOS 6.7
composer 1.10
symfony 3.0.9
PHP 5.6.40
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/05 03:47
2020/11/05 03:56
2020/11/05 04:57