zendframework / zend-expressive-tooling

Migration and development tooling for Expressive
BSD 3-Clause "New" or "Revised" License
32 stars 25 forks source link

Handler Create Command Throws return Type Error #92

Closed alyjee closed 5 years ago

alyjee commented 5 years ago

I've been following the docs for zend-expressive framework and I'm not able to create handler via command

composer expressive handler:create "App\Handler\HelloHandler"

The error basically says that getConfig() function must return array but it is returning object.

You can view the full error below:

> expressive --ansi 'handler:create' 'App\Handler\HelloHandler'
Using project autoloader based on current working directory
Creating request handler App\Handler\HelloHandler...
Success!
- Created class App\Handler\HelloHandler, in file /home/tahirraza/Personal/expressive/src/App/src/Handler/HelloHandler.php
PHP Fatal error:  Uncaught TypeError: Return value of Zend\Expressive\Tooling\CreateHandler\CreateTemplate::getConfig() must be of the type array, object returned in /home/tahirraza/Personal/expressive/vendor/zendframework/zend-expressive-tooling/src/ConfigAndContainerTrait.php:37
Stack trace:
#0 /home/tahirraza/Personal/expressive/vendor/zendframework/zend-expressive-tooling/src/CreateHandler/CreateTemplate.php(62): Zend\Expressive\Tooling\CreateHandler\CreateTemplate->getConfig('/home/tahirraza...')
#1 /home/tahirraza/Personal/expressive/vendor/zendframework/zend-expressive-tooling/src/CreateHandler/CreateHandlerCommand.php(310): Zend\Expressive\Tooling\CreateHandler\CreateTemplate->generateTemplate('App\\Handler\\Hel...', 'app', 'hello', NULL)
#2 /home/tahirraza/Personal/expressive/vendor/zendframework/zend-expressive-tooling/src/CreateHandler/CreateHandlerCommand.php(282): Zend\Expressive\Tooling\CreateHandler\CreateHandlerCommand->generateTemplate('App\\Handler\\Hel...', 'app', 'hello', NULL, '/home/tahirraza...', Object( in /home/tahirraza/Personal/expressive/vendor/zendframework/zend-expressive-tooling/src/ConfigAndContainerTrait.php on line 37
Script expressive --ansi handling the expressive event returned with an error

  [RuntimeException]                                                                                                                                                                                       
  Error Output: PHP Fatal error:  Uncaught TypeError: Return value of Zend\Expressive\Tooling\CreateHandler\CreateTemplate::getConfig() must be of the type array, object returned in /home/tahirraza/Per  
  sonal/expressive/vendor/zendframework/zend-expressive-tooling/src/ConfigAndContainerTrait.php:37                                                                                                         
  Stack trace:                                                                                                                                                                                             
  #0 /home/tahirraza/Personal/expressive/vendor/zendframework/zend-expressive-tooling/src/CreateHandler/CreateTemplate.php(62): Zend\Expressive\Tooling\CreateHandler\CreateTemplate->getConfig('/home/ta  
  hirraza...')                                                                                                                                                                                             
  #1 /home/tahirraza/Personal/expressive/vendor/zendframework/zend-expressive-tooling/src/CreateHandler/CreateHandlerCommand.php(310): Zend\Expressive\Tooling\CreateHandler\CreateTemplate->generateTemp  
  late('App\\Handler\\Hel...', 'app', 'hello', NULL)                                                                                                                                                       
  #2 /home/tahirraza/Personal/expressive/vendor/zendframework/zend-expressive-tooling/src/CreateHandler/CreateHandlerCommand.php(282): Zend\Expressive\Tooling\CreateHandler\CreateHandlerCommand->genera  
  teTemplate('App\\Handler\\Hel...', 'app', 'hello', NULL, '/home/tahirraza...', Object( in /home/tahirraza/Personal/expressive/vendor/zendframework/zend-expressive-tooling/src/ConfigAndContainerTrait.  
  php on line 37                                                                                                                                                                                           

expressive [--dev] [--no-dev] [--] [<args>]...

According to this source code the function's return type is array but on debugging I found that it's returning an ArrayObject instead.

michalbundyra commented 5 years ago

@alyjee Thanks for reporting. It seems to be a bug, imho. What DI container are you using?

As far as I remember ArrayObject is for AuraDi but might be also for something else. Would you like provide PR with the fix?

michalbundyra commented 5 years ago

Oh, actually see #89 - it seems to be the same issue.

alyjee commented 5 years ago

Thanks for the quick response. I'm using Symfony DIC. Pardon me, I missed the issue #89
So it seems there's a PR pending for this issue. How can I help?

michalbundyra commented 5 years ago

@alyjee PR is already open, we need a unit test to cover changes in the PR. If you have a moment to write it I would appreciate. I'll do my best to release hotfix this week.

alyjee commented 5 years ago

@webimpress ok that's great, will do for sure!