Skip to content

Commit 3cc7e87

Browse files
committed
AC-2855:Magento 2.4.4 admin panel - Error: Call to undefined method ReflectionUnionType::getName()
1 parent 629e9d9 commit 3cc7e87

File tree

5 files changed

+485
-4
lines changed

5 files changed

+485
-4
lines changed

app/code/Magento/Backend/Model/Menu.php

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,4 +318,138 @@ public function populateFromArray(array $data)
318318
}
319319
$this->exchangeArray($items);
320320
}
321+
322+
// Need to override and suppress return type deprecation warnings for php8 compatibility
323+
324+
#[\ReturnTypeWillChange]
325+
public function offsetExists($key)
326+
{
327+
return parent::offsetExists($key);
328+
}
329+
330+
#[\ReturnTypeWillChange]
331+
public function offsetGet($key)
332+
{
333+
return parent::offsetGet($key);
334+
}
335+
336+
#[\ReturnTypeWillChange]
337+
public function offsetSet($key, $value)
338+
{
339+
parent::offsetSet($key, $value);
340+
}
341+
342+
#[\ReturnTypeWillChange]
343+
public function offsetUnset($key)
344+
{
345+
parent::offsetUnset($key);
346+
}
347+
348+
#[\ReturnTypeWillChange]
349+
public function count()
350+
{
351+
return parent::count();
352+
}
353+
354+
#[\ReturnTypeWillChange]
355+
public function append($value)
356+
{
357+
parent::append($value);
358+
}
359+
360+
#[\ReturnTypeWillChange]
361+
public function getArrayCopy()
362+
{
363+
return parent::getArrayCopy();
364+
}
365+
366+
#[\ReturnTypeWillChange]
367+
public function getFlags()
368+
{
369+
return parent::getFlags();
370+
}
371+
372+
#[\ReturnTypeWillChange]
373+
public function setFlags($flags)
374+
{
375+
parent::setFlags($flags);
376+
}
377+
378+
#[\ReturnTypeWillChange]
379+
public function asort($flags = SORT_REGULAR)
380+
{
381+
parent::asort($flags);
382+
}
383+
384+
#[\ReturnTypeWillChange]
385+
public function ksort($flags = SORT_REGULAR)
386+
{
387+
parent::ksort($flags);
388+
}
389+
390+
#[\ReturnTypeWillChange]
391+
public function uasort($callback)
392+
{
393+
parent::uasort($callback);
394+
}
395+
396+
#[\ReturnTypeWillChange]
397+
public function uksort($callback)
398+
{
399+
parent::uksort($callback);
400+
}
401+
402+
#[\ReturnTypeWillChange]
403+
public function exchangeArray($array)
404+
{
405+
return parent::exchangeArray($array);
406+
}
407+
408+
#[\ReturnTypeWillChange]
409+
public function setIteratorClass($iteratorClass)
410+
{
411+
parent::setIteratorClass($iteratorClass);
412+
}
413+
414+
#[\ReturnTypeWillChange]
415+
public function natsort()
416+
{
417+
parent::natsort();
418+
}
419+
420+
#[\ReturnTypeWillChange]
421+
public function natcasesort()
422+
{
423+
parent::natcasesort();
424+
}
425+
426+
#[\ReturnTypeWillChange]
427+
public function __serialize()
428+
{
429+
return parent::__serialize();
430+
}
431+
432+
#[\ReturnTypeWillChange]
433+
public function __unserialize(array $data)
434+
{
435+
parent::__unserialize($data);
436+
}
437+
438+
#[\ReturnTypeWillChange]
439+
public function getIterator()
440+
{
441+
return parent::getIterator();
442+
}
443+
444+
#[\ReturnTypeWillChange]
445+
public function getIteratorClass()
446+
{
447+
return parent::getIteratorClass();
448+
}
449+
450+
#[\ReturnTypeWillChange]
451+
public function __debugInfo()
452+
{
453+
return parent::__debugInfo();
454+
}
321455
}

lib/internal/Magento/Framework/Code/Generator/EntityAbstract.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -332,14 +332,22 @@ private function extractParameterType(
332332
/** @var string|null $typeName */
333333
$typeName = null;
334334
$parameterType = $parameter->getType();
335-
if ($parameterType->getName() === 'array') {
335+
336+
if ($parameterType instanceof \ReflectionUnionType) {
337+
$parameterType = $parameterType->getTypes();
338+
$parameterType = implode('|', $parameterType);
339+
} else {
340+
$parameterType = $parameterType->getName();
341+
}
342+
343+
if ($parameterType === 'array') {
336344
$typeName = 'array';
337345
} elseif ($parameterClass = $this->getParameterClass($parameter)) {
338346
$typeName = $this->_getFullyQualifiedClassName($parameterClass->getName());
339-
} elseif ($parameterType->getName() === 'callable') {
347+
} elseif ($parameterType === 'callable') {
340348
$typeName = 'callable';
341349
} else {
342-
$typeName = $parameterType->getName();
350+
$typeName = $parameterType;
343351
}
344352

345353
if ($parameter->allowsNull()) {

lib/internal/Magento/Framework/Interception/Test/Unit/Code/Generator/InterceptorTest.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,12 @@ public function interceptorDataProvider()
9090
\Magento\Framework\Interception\Code\Generator\TSample::class,
9191
\Magento\Framework\Interception\Code\Generator\TSample\Interceptor::class,
9292
'TInterceptor'
93-
]
93+
],
94+
[
95+
\Magento\Framework\Interception\Code\Generator\SampleBackendMenu::class,
96+
\Magento\Framework\Interception\Code\Generator\SampleBackendMenu\Interceptor::class,
97+
'SampleBackendMenuInterceptor',
98+
],
9499
];
95100
}
96101
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Framework\Interception\Code\Generator;
7+
8+
use Magento\Backend\Model\Menu;
9+
10+
class SampleBackendMenu extends Menu
11+
{
12+
13+
}

0 commit comments

Comments
 (0)