Это кажется довольно простой проблемой отражения, но я не могу понять это. Я использую Laravel 4.2 на Debian с PHP 5.6.6-1.Странное поведение отражения в php Laravel 4
Основном происходит то, что я хочу, чтобы породить новый объект из класса в Laravel QueueHandler так:
$className = 'MyClass';
$myobject = new $className();
и это не работает. Я пробовал все, о чем я могу думать, и не знаю, где искать. Этот код Безразлично, т работу в то время как он должен:
<?php
use Pronamic\Twinfield\Secure\Config;
use Pronamic\Twinfield\Customer\CustomerFactory;
class TwinfieldQueueHandler {
private $twinfieldConfig = null;
...
try {
$twinfieldFactoryClass = 'CustomerFactory';
//returns 0
echo strcmp('CustomerFactory', $twinfieldFactoryClass);
//works
$test0 = new CustomerFactory ($this->twinfieldConfig);
//throws an exeption with message: "Class CustomerFactory does not exist"
$r = new ReflectionClass($twinfieldFactoryClass);
$test1 = $r->newInstanceArgs($this->twinfieldConfig);
//gives error PHP Fatal error: Class 'CustomerFactory' not found in {file} on line {line}
$test2 = new $twinfieldFactoryClass ($this->twinfieldConfig);
} catch (Exception $e) {
Log::error($e->getMessage());
}
Кто-нибудь есть какие-либо указатели о том, где искать и как отладить это?
Это натяжкой, но единственное, что я был в состоянии думать что-то делать с отражением/переменный метод не правильно подбирает пространства имен. Возможно, попробуйте определить класс, используя полное явное пространство имен? т. е. '$ twinfieldFactoryClass = '\ Pronamic \ Twinfield \ Customer \ CustomerFactory';'. Длинный выстрел, хотя .. –