Всё чушь и бред. Достаточно заглянуть в документацию и увидеть
комментарий, где говорится, что из-за особенностей реализации необходимо вызывать метод current(), чтобы предотвратить бесконечный цикл.
reaper, хорошо, спс, буду знать.
По поводу зендовского локатора служб накидал
статью. Возможно это решит некоторые вопросы, связанные с этим паттерном.
# Delphinum (16.12.2016 / 14:02)
По поводу зендовского локатора служб накидал статью. Возможно это решит некоторые вопросы, связанные с этим паттерном.
Вот это уже полезно, в свете наших новых локальных разработок (JohnCMS 7, mobiCMS) - это основное связующее звено движка (читай центр ядра).
Но в контексте именно zend-servicemanager статья неполная.
Практически мало рассмотрена programmatic / config-driven инициализация сервиса.
1) программное, пихаем все сервисы построчно, как описано в статье.
2)
на конфигах (что
рекомендуется разработчиками Zend), в этом случае вся конфигурация контейнера и подключаемые сервисы описаны в конфиг файлах и загружаются в контейнер при его инициализации.
Пример: реализация подобного метода в JohnCMS 7
Считываем конфигурацию из файлов
Инициализируем сам контейнер и загружаем в него конфигурацию
Ну и конкретный пример конфига
Что интересно, большинство пакетов Zend Framework уже из коробки рассчитаны на работу с конфигами и имеют на борту фабрики для сервисменеджера+конфиги, что видно на примере примененного у нас zend-i18n
AlkatraZ,
в самом конце в двух словах обмолвился о конфигурировании контейнера.
Сегодня с помощью
get_declared_classes() обнаружил доступность 186-и классов "по умолчанию"... Это нормально, если я ними не пользуюсь?
* (+/-)
/*
array(186) {
[0]=>
string(8) "stdClass"
[1]=>
string(9) "Exception"
[2]=>
string(14) "ErrorException"
[3]=>
string(7) "Closure"
[4]=>
string(8) "DateTime"
[5]=>
string(12) "DateTimeZone"
[6]=>
string(12) "DateInterval"
[7]=>
string(10) "DatePeriod"
[8]=>
string(14) "LogicException"
[9]=>
string(24) "BadFunctionCallException"
[10]=>
string(22) "BadMethodCallException"
[11]=>
string(15) "DomainException"
[12]=>
string(24) "InvalidArgumentException"
[13]=>
string(15) "LengthException"
[14]=>
string(19) "OutOfRangeException"
[15]=>
string(16) "RuntimeException"
[16]=>
string(20) "OutOfBoundsException"
[17]=>
string(17) "OverflowException"
[18]=>
string(14) "RangeException"
[19]=>
string(18) "UnderflowException"
[20]=>
string(24) "UnexpectedValueException"
[21]=>
string(25) "RecursiveIteratorIterator"
[22]=>
string(16) "IteratorIterator"
[23]=>
string(14) "FilterIterator"
[24]=>
string(23) "RecursiveFilterIterator"
[25]=>
string(22) "CallbackFilterIterator"
[26]=>
string(31) "RecursiveCallbackFilterIterator"
[27]=>
string(14) "ParentIterator"
[28]=>
string(13) "LimitIterator"
[29]=>
string(15) "CachingIterator"
[30]=>
string(24) "RecursiveCachingIterator"
[31]=>
string(16) "NoRewindIterator"
[32]=>
string(14) "AppendIterator"
[33]=>
string(16) "InfiniteIterator"
[34]=>
string(13) "RegexIterator"
[35]=>
string(22) "RecursiveRegexIterator"
[36]=>
string(13) "EmptyIterator"
[37]=>
string(21) "RecursiveTreeIterator"
[38]=>
string(11) "ArrayObject"
[39]=>
string(13) "ArrayIterator"
[40]=>
string(22) "RecursiveArrayIterator"
[41]=>
string(11) "SplFileInfo"
[42]=>
string(17) "DirectoryIterator"
[43]=>
string(18) "FilesystemIterator"
[44]=>
string(26) "RecursiveDirectoryIterator"
[45]=>
string(12) "GlobIterator"
[46]=>
string(13) "SplFileObject"
[47]=>
string(17) "SplTempFileObject"
[48]=>
string(19) "SplDoublyLinkedList"
[49]=>
string(8) "SplQueue"
[50]=>
string(8) "SplStack"
[51]=>
string(7) "SplHeap"
[52]=>
string(10) "SplMinHeap"
[53]=>
string(10) "SplMaxHeap"
[54]=>
string(16) "SplPriorityQueue"
[55]=>
string(13) "SplFixedArray"
[56]=>
string(16) "SplObjectStorage"
[57]=>
string(16) "MultipleIterator"
[58]=>
string(19) "ReflectionException"
[59]=>
string(10) "Reflection"
[60]=>
string(26) "ReflectionFunctionAbstract"
[61]=>
string(18) "ReflectionFunction"
[62]=>
string(19) "ReflectionParameter"
[63]=>
string(16) "ReflectionMethod"
[64]=>
string(15) "ReflectionClass"
[65]=>
string(16) "ReflectionObject"
[66]=>
string(18) "ReflectionProperty"
[67]=>
string(19) "ReflectionExtension"
[68]=>
string(23) "ReflectionZendExtension"
[69]=>
string(14) "SessionHandler"
[70]=>
string(22) "__PHP_Incomplete_Class"
[71]=>
string(15) "php_user_filter"
[72]=>
string(9) "Directory"
[73]=>
string(10) "ZipArchive"
[74]=>
string(11) "LibXMLError"
[75]=>
string(12) "DOMException"
[76]=>
string(13) "DOMStringList"
[77]=>
string(11) "DOMNameList"
[78]=>
string(21) "DOMImplementationList"
[79]=>
string(23) "DOMImplementationSource"
[80]=>
string(17) "DOMImplementation"
[81]=>
string(7) "DOMNode"
[82]=>
string(16) "DOMNameSpaceNode"
[83]=>
string(19) "DOMDocumentFragment"
[84]=>
string(11) "DOMDocument"
[85]=>
string(11) "DOMNodeList"
[86]=>
string(15) "DOMNamedNodeMap"
[87]=>
string(16) "DOMCharacterData"
[88]=>
string(7) "DOMAttr"
[89]=>
string(10) "DOMElement"
[90]=>
string(7) "DOMText"
[91]=>
string(10) "DOMComment"
[92]=>
string(11) "DOMTypeinfo"
[93]=>
string(18) "DOMUserDataHandler"
[94]=>
string(11) "DOMDomError"
[95]=>
string(15) "DOMErrorHandler"
[96]=>
string(10) "DOMLocator"
[97]=>
string(16) "DOMConfiguration"
[98]=>
string(15) "DOMCdataSection"
[99]=>
string(15) "DOMDocumentType"
[100]=>
string(11) "DOMNotation"
[101]=>
string(9) "DOMEntity"
[102]=>
string(18) "DOMEntityReference"
[103]=>
string(24) "DOMProcessingInstruction"
[104]=>
string(15) "DOMStringExtend"
[105]=>
string(8) "DOMXPath"
[106]=>
string(12) "PDOException"
[107]=>
string(3) "PDO"
[108]=>
string(12) "PDOStatement"
[109]=>
string(6) "PDORow"
[110]=>
string(16) "SimpleXMLElement"
[111]=>
string(17) "SimpleXMLIterator"
[112]=>
string(9) "XMLReader"
[113]=>
string(9) "XMLWriter"
[114]=>
string(5) "finfo"
[115]=>
string(16) "ImagickException"
[116]=>
string(20) "ImagickDrawException"
[117]=>
string(29) "ImagickPixelIteratorException"
[118]=>
string(21) "ImagickPixelException"
[119]=>
string(7) "Imagick"
[120]=>
string(11) "ImagickDraw"
[121]=>
string(20) "ImagickPixelIterator"
[122]=>
string(12) "ImagickPixel"
[123]=>
string(12) "MemcachePool"
[124]=>
string(8) "Memcache"
[125]=>
string(11) "MongoClient"
[126]=>
string(5) "Mongo"
[127]=>
string(7) "MongoDB"
[128]=>
string(15) "MongoCollection"
[129]=>
string(11) "MongoCursor"
[130]=>
string(18) "MongoCommandCursor"
[131]=>
string(11) "MongoGridFS"
[132]=>
string(15) "MongoGridFSFile"
[133]=>
string(17) "MongoGridFSCursor"
[134]=>
string(15) "MongoWriteBatch"
[135]=>
string(16) "MongoInsertBatch"
[136]=>
string(16) "MongoUpdateBatch"
[137]=>
string(16) "MongoDeleteBatch"
[138]=>
string(7) "MongoId"
[139]=>
string(9) "MongoCode"
[140]=>
string(10) "MongoRegex"
[141]=>
string(9) "MongoDate"
[142]=>
string(12) "MongoBinData"
[143]=>
string(10) "MongoDBRef"
[144]=>
string(14) "MongoException"
[145]=>
string(24) "MongoConnectionException"
[146]=>
string(20) "MongoCursorException"
[147]=>
string(27) "MongoCursorTimeoutException"
[148]=>
string(20) "MongoGridFSException"
[149]=>
string(20) "MongoResultException"
[150]=>
string(26) "MongoWriteConcernException"
[151]=>
string(26) "MongoDuplicateKeyException"
[152]=>
string(30) "MongoExecutionTimeoutException"
[153]=>
string(22) "MongoProtocolException"
[154]=>
string(14) "MongoTimestamp"
[155]=>
string(10) "MongoInt32"
[156]=>
string(10) "MongoInt64"
[157]=>
string(8) "MongoLog"
[158]=>
string(9) "MongoPool"
[159]=>
string(11) "MongoMaxKey"
[160]=>
string(11) "MongoMinKey"
[161]=>
string(20) "mysqli_sql_exception"
[162]=>
string(13) "mysqli_driver"
[163]=>
string(6) "mysqli"
[164]=>
string(14) "mysqli_warning"
[165]=>
string(13) "mysqli_result"
[166]=>
string(11) "mysqli_stmt"
[167]=>
string(13) "PharException"
[168]=>
string(4) "Phar"
[169]=>
string(8) "PharData"
[170]=>
string(12) "PharFileInfo"
[171]=>
string(15) "PDFlibException"
[172]=>
string(6) "PDFlib"
[173]=>
string(5) "Redis"
[174]=>
string(10) "RedisArray"
[175]=>
string(14) "RedisException"
[176]=>
string(10) "SoapClient"
[177]=>
string(7) "SoapVar"
[178]=>
string(10) "SoapServer"
[179]=>
string(9) "SoapFault"
[180]=>
string(9) "SoapParam"
[181]=>
string(10) "SoapHeader"
[182]=>
string(7) "SQLite3"
[183]=>
string(11) "SQLite3Stmt"
[184]=>
string(13) "SQLite3Result"
[185]=>
string(13) "XSLTProcessor"
}*/
ДоХтор, половина стандартной библиотеки, а может и быльше
# Koenig (09.01.2017 / 19:09)
ДоХтор, половина стандартной библиотеки, а может и быльше
Ну у меня потому и возник вопрос, нужны ли эти библиотеки в области видимости
(или как правильно это назвать?) скриптов, которые их не используют? Не тормозит ли всё это "барахло" работу скриптов...
ДоХтор, нет, количество задекларированных классов не влияет на производительность