KAGOYAのマネージド専用サーバでSOY Shopを動かすことになったので、

PHPのバージョンを7系統にアップグレードしたら、


公開側、管理画面側のどちらでも

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP〜

というエラーが出て焦った。


エラーを読んでみると、

次期バージョンからクラス名と同名のコンストラクタを使用することを禁止するよ。

ということで、


一体、どこだろうと探してみると、

すべてのページで書かれている下記の様なコードだった。


<?php

class IndexPage extends WebPage{
	
	function IndexPage(){}	
}
?>

SOY App開発の解説 管理画面のHOMEを作成する - SOY CMS 開発ブログ


他にも下記の様なロジックのファイルもあった。


<?php

class SampleLogic extends SOY2LogicBase{
	
	function SampleLogic(){}
}
?>

とりあえず、これらを


<?php

class IndexPage extends WebPage{
	
	function __construct(){}	
}
?>

に変更したけど、まだエラーは消えない。


他にも探ってみると、


<?php

class IndexPage extends WebPage{
	
	function doPost(){}
	
	function IndexPage(){
		WebPage::WebPage();
	}	
}
?>

対になるHTMLファイルを表示するためや、POSTの処理を行うWebPageクラスのWebPageメソッドもクラス名と同名のメソッドだった…


というわけで、


<?php

class IndexPage extends WebPage{
	
	function doPost(){}
	
	function IndexPage(){
		WebPage::__construct();
	}	
}
?>

に修正しても動く様に色々と書き換えた。


これで、無事にKAGOYAのマネージド専用サーバでPHP7にしてリリースすることが出来た。


今回の修正はいつもの通り、GitHubで管理しているリポジトリにZIPファイルとしてpushしておきましたので、

KAGOYAのマネージド専用サーバのようにエラーメッセージ周りの設定をphp.iniに気軽に変更できない環境でSOY CMS/Shopを使用する場合にご利用ください。

https://github.com/inunosinsi/soycms/tree/master/package


今回の修正が公式サイトでも反映されることを切に願います。