5.7 の外部フォームのコントローラーで、PHPのDateTimeクラスが使えない

2017年8月30日 at 1:41

concrete5.7.5.13 において、外部フォームのコントローラーで下記のような記述をしました。

$dt = new DateTime('2017-5-28');

すると、次のエラーになりました。

Class 'Application\Block\ExternalForm\Form\Controller\DateTime' not found

ビューではエラーにならず、DateTimeクラスとして使えます。
サーバーのPHPのバージョンは 5.4.45 です。

ご確認をお願いいたします。

タグ:

Re: 5.7 の外部フォームのコントローラーで、PHPのDateTimeクラスが使えない

2017年8月30日 at 11:11
具体的なコードが記載されていないので、あくまで一般的なケース想定での回答です。

PHPに用意されているDateTimeであれば、グローバル空間に配置されているので、
new \DateTime という形で呼び出します。
http://php.net/manual/ja/language.namespaces.global.php

もし、ご自分でDateTimeというクラスを作っているのであれば、そこの名前空間の設定がおかしいか、呼び出し方がおかしいか、だと思われます。
 

Re: 5.7 の外部フォームのコントローラーで、PHPのDateTimeクラスが使えない

2017年8月30日 at 13:53
示していただいたページを参考に修正したところ、うまく行きました。

名前空間についてよくわかっていなかったようです。
コントローラーは名前空間の内部なので、グローバル空間のクラスを呼び出す場合は、\が必要なのですね。

勉強になりました。
ありがとうございました。