public function getClassEntryByClassName($className, CompilationContext $compilationContext, $check = true)
{
$this->compiler = $compilationContext->compiler;
switch (strtolower($className)) {
/**
* Zend classes
*/
case 'exception':
$classEntry = 'zend_exception_get_default(TSRMLS_C)';
break;
/**
* Zend interfaces (Zend/zend_interfaces.h)
*/
/**
* Zend interfaces (Zend/zend_interfaces.h)
*/
case 'iterator':
$classEntry = 'zend_ce_iterator';
break;
case 'arrayaccess':
$classEntry = 'zend_ce_arrayaccess';
break;
case 'serializable':
$classEntry = 'zend_ce_serializable';
break;
case 'iteratoraggregate':
$classEntry = 'zend_ce_aggregate';
break;
/**
* SPL Exceptions
*/
/**
* SPL Exceptions
*/
case 'logicexception':
$compilationContext->headersManager->add('ext/spl/spl_exceptions');
$classEntry = 'spl_ce_LogicException';
break;
case 'badfunctioncallexception':
$compilationContext->headersManager->add('ext/spl/spl_exceptions');
$classEntry = 'spl_ce_BadFunctionCallException';
break;
case 'badmethodcallexception':
$compilationContext->headersManager->add('ext/spl/spl_exceptions');
$classEntry = 'spl_ce_BadMethodCallException';
break;
case 'domainexception':
$compilationContext->headersManager->add('ext/spl/spl_exceptions');
$classEntry = 'spl_ce_DomainException';
break;
case 'invalidargumentexception':
$compilationContext->headersManager->add('ext/spl/spl_exceptions');
$classEntry = 'spl_ce_InvalidArgumentException';
break;
case 'lengthexception':
$compilationContext->headersManager->add('ext/spl/spl_exceptions');
$classEntry = 'spl_ce_LengthException';
break;
case 'outofrangeexception':
$compilationContext->headersManager->add('ext/spl/spl_exceptions');
$classEntry = 'spl_ce_OutOfRangeException';
break;
case 'runtimeexception':
$compilationContext->headersManager->add('ext/spl/spl_exceptions');
$classEntry = 'spl_ce_RuntimeException';
break;
case 'outofboundsexception':
$compilationContext->headersManager->add('ext/spl/spl_exceptions');
$classEntry = 'spl_ce_OutOfBoundsException';
break;
case 'overflowexception':
$compilationContext->headersManager->add('ext/spl/spl_exceptions');
$classEntry = 'spl_ce_OverflowException';
break;
case 'rangeexception':
$compilationContext->headersManager->add('ext/spl/spl_exceptions');
$classEntry = 'spl_ce_RangeException';
break;
case 'underflowexception':
$compilationContext->headersManager->add('ext/spl/spl_exceptions');
$classEntry = 'spl_ce_UnderflowException';
break;
case 'unexpectedvalueexception':
$compilationContext->headersManager->add('ext/spl/spl_exceptions');
$classEntry = 'spl_ce_UnexpectedValueException';
break;
/**
* SPL Iterators Interfaces (spl/spl_iterators.h)
*/
/**
* SPL Iterators Interfaces (spl/spl_iterators.h)
*/
case 'recursiveiterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_RecursiveIterator';
break;
case 'recursiveiteratoriterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_RecursiveIteratorIterator';
break;
case 'recursivetreeiterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_RecursiveTreeIterator';
break;
case 'filteriterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_FilterIterator';
break;
case 'recursivefilteriterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_RecursiveFilterIterator';
break;
case 'parentiterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_ParentIterator';
break;
case 'seekableiterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_SeekableIterator';
break;
case 'limititerator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_LimitIterator';
break;
case 'cachingiterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_CachingIterator';
break;
case 'recursivecachingiterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_RecursiveCachingIterator';
break;
case 'outeriterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_OuterIterator';
break;
case 'iteratoriterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_IteratorIterator';
break;
case 'norewinditerator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_NoRewindIterator';
break;
case 'infiniteiterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_InfiniteIterator';
break;
case 'emptyiterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_EmptyIterator';
break;
case 'appenditerator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_AppendIterator';
break;
case 'regexiterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_RegexIterator';
break;
case 'recursiveregexiterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_RecursiveRegexIterator';
break;
case 'directoryiterator':
$compilationContext->headersManager->add('ext/spl/spl_directory');
$classEntry = 'spl_ce_DirectoryIterator';
break;
case 'filesystemiterator':
$compilationContext->headersManager->add('ext/spl/spl_directory');
$classEntry = 'spl_ce_FilesystemIterator';
break;
case 'recursivedirectoryiterator':
$compilationContext->headersManager->add('ext/spl/spl_directory');
$classEntry = 'spl_ce_RecursiveDirectoryIterator';
break;
case 'globiterator':
$compilationContext->headersManager->add('ext/spl/spl_directory');
$classEntry = 'spl_ce_GlobIterator';
break;
case 'splfileobject':
$compilationContext->headersManager->add('ext/spl/spl_directory');
$classEntry = 'spl_ce_SplFileObject';
break;
case 'spltempfileobject':
$compilationContext->headersManager->add('ext/spl/spl_directory');
$classEntry = 'spl_ce_SplTempFileObject';
break;
case 'countable':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_Countable';
break;
case 'callbackfilteriterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_CallbackFilterIterator';
break;
case 'recursivecallbackfilteriterator':
$compilationContext->headersManager->add('ext/spl/spl_iterators');
$classEntry = 'spl_ce_RecursiveCallbackFilterIterator';
break;
case 'arrayobject':
$compilationContext->headersManager->add('ext/spl/spl_array');
$classEntry = 'spl_ce_ArrayObject';
break;
case 'splfixedarray':
$compilationContext->headersManager->add('ext/spl/spl_fixedarray');
$classEntry = 'spl_ce_SplFixedArray';
break;
case 'splpriorityqueue':
$compilationContext->headersManager->add('ext/spl/spl_heap');
$classEntry = 'spl_ce_SplPriorityQueue';
break;
case 'splfileinfo':
$compilationContext->headersManager->add('ext/spl/spl_directory');
$classEntry = 'spl_ce_SplFileInfo';
break;
case 'splheap':
$compilationContext->headersManager->add('ext/spl/spl_heap');
$classEntry = 'spl_ce_SplHeap';
break;
case 'splminheap':
$compilationContext->headersManager->add('ext/spl/spl_heap');
$classEntry = 'spl_ce_SplMinHeap';
break;
case 'splmaxheap':
$compilationContext->headersManager->add('ext/spl/spl_heap');
$classEntry = 'spl_ce_SplMaxHeap';
break;
case 'splstack':
$compilationContext->headersManager->add('ext/spl/spl_dllist');
$classEntry = 'spl_ce_SplStack';
break;
case 'splqueue':
$compilationContext->headersManager->add('ext/spl/spl_dllist');
$classEntry = 'spl_ce_SplQueue';
break;
case 'spldoublylinkedlist':
$compilationContext->headersManager->add('ext/spl/spl_dllist');
$classEntry = 'spl_ce_SplDoublyLinkedList';
break;
case 'stdclass':
$classEntry = 'zend_standard_class_def';
break;
case 'closure':
$compilationContext->headersManager->add('Zend/zend_closures');
$classEntry = 'zend_ce_closure';
break;
case 'pdo':
$compilationContext->headersManager->add('ext/pdo/php_pdo_driver');
$classEntry = 'php_pdo_get_dbh_ce()';
break;
case 'pdostatement':
$compilationContext->headersManager->add('kernel/main');
$classEntry = $compilationContext->backend->fetchClassEntry("pdostatement");
break;
case 'pdoexception':
$compilationContext->headersManager->add('ext/pdo/php_pdo_driver');
$classEntry = 'php_pdo_get_exception()';
break;
case 'datetime':
$compilationContext->headersManager->add('ext/date/php_date');
$classEntry = 'php_date_get_date_ce()';
break;
case 'datetimezone':
$compilationContext->headersManager->add('ext/date/php_date');
$classEntry = 'php_date_get_timezone_ce()';
break;
// Reflection
/*case 'reflector':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflector_ptr';
break;
case 'reflectionexception':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_exception_ptr';
break;
case 'reflection':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_ptr';
break;
case 'reflectionfunctionabstract':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_function_abstract_ptr';
break;
case 'reflectionfunction':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_function_ptr';
break;
case 'reflectionparameter':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_parameter_ptr';
break;
case 'reflectionclass':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_class_ptr';
break;
case 'reflectionobject':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_object_ptr';
break;
case 'reflectionmethod':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_method_ptr';
break;
case 'reflectionproperty':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_property_ptr';
break;
case 'reflectionextension':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_extension_ptr';
break;
case 'reflectionzendextension':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_zend_extension_ptr';
break;*/
// Reflection
/*case 'reflector':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflector_ptr';
break;
case 'reflectionexception':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_exception_ptr';
break;
case 'reflection':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_ptr';
break;
case 'reflectionfunctionabstract':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_function_abstract_ptr';
break;
case 'reflectionfunction':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_function_ptr';
break;
case 'reflectionparameter':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_parameter_ptr';
break;
case 'reflectionclass':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_class_ptr';
break;
case 'reflectionobject':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_object_ptr';
break;
case 'reflectionmethod':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_method_ptr';
break;
case 'reflectionproperty':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_property_ptr';
break;
case 'reflectionextension':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_extension_ptr';
break;
case 'reflectionzendextension':
$compilationContext->headersManager->add('ext/reflection/php_reflection');
$classEntry = 'reflection_zend_extension_ptr';
break;*/
default:
if (!$check) {
throw new CompilerException('Unknown class entry for "' . $className . '"');
} else {
$classEntry = $compilationContext->backend->fetchClassEntry(Utils::escapeClassName(strtolower($className)));
}
}
return $classEntry;
}