When I make changes to my Entity code, the changes only reflect after restarting the REPL console. How do I always have the latest code in my REPL console?
./bin/cake console
> $ac_table = Cake\Datasource\FactoryLocator::get('Table')->get('AccountChannels');
> $ac = $ac_table->find()->first()
> $ac->someFunc(); // I can only see changes to this function after restarting the console
I also tried to reload the entity with the first()
call after a code change, but no luck.
CakePHP uses PsySH under the hood, and currently it doesn't support code reloading, unless you can get a runkit version with import support running in your PHP environment.
Hey there's an existing fork of runkit for php7. Unfortunatly the
runkit_import
function was removed in version 4.0.0a1, apparently because of bugs withphp7.3+
, so this will not work for latest versions of php, but it should be mostly ok for earlier versions (haven't fully tested though). To install:
pecl install runkit7-3.1.0a1
I created a PR to update
RunkitReloader.php
class (nb: might not work for class props, see pr modifications)
https://github.com/bobthecow/psysh/issues/416#issuecomment-776631583