2016-11-04 3 views
0

をインスタンス化しようとするので、私はここに単純なクラスを持っている:予期しない機能、クラス

<?php 
class MyClass 
{ 
    private $key; 
    private $location; 

    function __construct($par1Key, $par2Location) 
    { 
     if(empty($par1Key) || empty($par2Location)) 
      throw new Exception("One or more parameters were left empty."); 
     //do stuff 
    } 

    public static function new($par1Key, $par2Location) { 
     try { 
      return new MyClass($par1Key, $par2Location); 
     } catch (Exception $e) { 
      return null; 
     } 
    } 
} 
?> 

は今、私は私のプロジェクトページでそれを必要とするときにこれをやろうとしている:

<?php 
    require('myclass.php'); 

    function getInfo($location) { 
     $key = 'xyzabc123'; 
     $class = MyClass::new($key, $location); 

     return $class->myMethod(); 
    } 
?> 

しかし、それはエラーがスローされます。

Parse error: syntax error, unexpected 'new' (T_NEW) in PATHTOFILE/file.php on line 6.

どのように私はこのエラーを回避することができますか?

+4

「new」は予約済みのキーワードだと思いますが、関数名として使用することはできません。 – Phiter

+0

私の答えが助けられたなら、それが受け入れられたものとしてチェックして、他の人がそれを将来見ることができるようにしてください。 – Phiter

答えて

1

newはPHPのreserved keywordsの1つですが、関数名や変数名として使用することはできません。

enter image description here

createNewか何かのように、何か他のものにあなたの関数名を変更し

、それが動作します。

0

Philter Fernandesのおかげで、newが予約済みキーワードであるという問題が指摘されました。私はメソッド名を変更し、今すぐ動作します。

関連する問題