t_variable - Error de PHP Parse: error de sintaxis, inesperado T_OBJECT_OPERATOR
parse error: syntax error, unexpected end of file (3)
Obtuve este error al depurar mi código:
Error de PHP Parse: error de sintaxis, inesperado T_OBJECT_OPERATOR en order.php en la línea 72
Aquí hay un fragmento del código (comenzando en la línea 72):
$purchaseOrder = new PurchaseOrderFactory->instance();
$arrOrderDetails = $purchaseOrder->load($customerName);
Lamentablemente, no es posible llamar a un método en un objeto recién creado con new
antes de PHP 5.4.
En PHP 5.4 y posterior, se puede usar lo siguiente:
$purchaseOrder = (new PurchaseOrderFactory)->instance();
En versiones anteriores, debe llamar al método en una variable:
$purchaseFactory = new PurchaseOrderFactory;
$purchaseOrder = $purchaseFactory->instance();
Nota: Lo posterior probablemente sea aún más útil / inteligente incluso después de que haya actualizado a PHP 5.4 porque esas dos líneas se pueden separar mejor y hay menos código que contenga un nombre de clase codificado, aquí el nombre de la clase de fábrica PurchaseOrderFactory
. Esto te hará más fluido manteniendo el código a lo largo del tiempo.
No puede usar (su sintaxis php es inválida):
new PurchaseOrderFactory->instance();
Probablemente quiso decir uno de esos:
// Initialize new object of class PurchaseOrderFactory
new PurchaseOrderFactory();
// Clone instance of already existing PurchaseOrderFactory
clone PurchaseOrderFactory::instance();
// Simply use one instance
PurchaseOrderFactory::instance();
// Initialize new object and that use one of its methods
$tmp = new PurchaseOrderFactory();
$tmp->instance();
cambie a como su sintaxis no es válida:
$purchaseOrder = PurchaseOrderFactory::instance();
$arrOrderDetails = $purchaseOrder->load($customerName);
donde presumiblemente instance()
crea una instancia de la clase. Puedes hacer esto en lugar de decir new