尝试实例化类时存在意外的函数

时间:2016-11-04 10:41:03

标签: php

所以我在这里有一个简单的课程:

<?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();
    }
?>

但它会引发错误:

  

解析错误:语法错误,意外的'新'(T_NEW)   第6行的PATHTOFILE / file.php。

如何避免此错误?

2 个答案:

答案 0 :(得分:1)

new是PHP中的reserved keywords之一,您不能将其用作函数或变量名。

enter image description here

将您的功能名称更改为其他内容,例如createNew或其他内容,它会起作用。

答案 1 :(得分:0)

感谢Philter Fernandes,问题指出new是一个保留关键字。我更改了方法名称,现在可以使用了。