CakePHP Shells I didn't know about
Did you know there is a shell that allows you to enable a plugin after installing it via composer?
bin/cake plugin load Muffin/Trash
You can also load the plugin’s bootstrap or routes:
# I'm not releasing this, so don't try and composer require it bin/cake plugin load --bootstrap --routes Josegonzalez/Blog
Most people installed CakePHP 3 using the
cakephp/app project template, so you have access to both
# migrate all the things! bin/cake migrations migrate # get a migration status bin/cake migrations status # bake a migration bin/cake bake migration_snapshot Initial # bake a form (or really anything else) bin/cake bake form AddForm
If you are running migrations, it may be useful to clear the ORM’s cache so that your code is aware of the new fields:
bin/cake migrations migrate && bin/cake orm_cache clear
And if you are deploying code, maybe you want to ensure the cache is set before the first user’s request comes in, speeding up that initial request:
bin/cake orm_cache build
I’m a big fan of the
server shell. It allows me to quickly test an app locally without needing to setup a virtualhost or a webserver. Very useful for development, and something I recommend everyone learn to place in their arsenal:
# specify a port I know won't collide with other stuff I run on my machine bin/cake server -p 1995
In older versions of CakePHP 3, we introduced a full REPL around boris, but that has since been replaced with Psysh. It’s actually quite nice, and lets me test out new code I’ve written in various scenarios.
# yo dawg, i hurd u liek shells, so I put a shell in your shell so you can shell while you shell! bin/cake console # Note: it saves your history, just like a regular shell, which is nice :)
And finally, something I missed from my short stint doing Ruby on Rails, being able to list routes in an application.
# list routes bin/cake routes # see what a url route maps to internally bin/cake routes check /articles # generate the url route for a key:pair setup bin/cake routes generate controller:Articles action:view 2
A shell I discovered a few weeks back is one by the ever-helpful Loadsys Web Strategies company. It lets you read into keys were loaded into configure (which is great if you have an app with several
Configure::load() statements and don’t know where a key might be):
# install it composer require loadsys/cakephp-config-read:~3.0 # load it bin/cake plugin load ConfigRead # use it (on your debug mode) bin/cake config_read debug # on your application's encoding bin/cake config_read App.encoding # on the default database configuration bin/cake config_read Datasources.default
Is there a CakePHP Shell you’d like to see ported from another framework? Something you find useful or lacking? Leave a note in the comments.