Skip to content

Instantly share code, notes, and snippets.

@alganet
Created February 14, 2012 18:20
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alganet/1828802 to your computer and use it in GitHub Desktop.
Save alganet/1828802 to your computer and use it in GitHub Desktop.
Respect\Cli

Respect\Cli

A tool for interacting with PHP code from the command line. It is intended to be used alongside Respect\Config.

Main Actions

Usage: [action] [config] [command]

  • print -p shows up a shell-friendly representation of the given command
  • serve -s opens up a standalone PHP server serving the given command
  • start -d opens up a PHP daemon for the given command
  • interactive -a lets the user interact with the code

Usage Samples

Prints out tables from a MySQL database using PDO:

$ respect print Pdo --dsn='mysql:localhost;dbname=mydb' --user=root --password='' query 'SHOW TABLES'

Arguments starting with '--' are configuration/instantiation, other arguments are commands. Commands are always 'fluent', so the next command always runs upon the last command return.

This is equivalent to:

<?php
$command = new PDO('mysql:localhost;dbname=mydb', 'root', '');
$command = $command->query('SHOW TABLES');
return Respect\Cli\TextFormatter($command);

Using an external Respect\Config INI file:

$ respect print --myconfig.ini db query 'SHOW TABLES'

INI file:

[db Pdo]
dsn = mysql:localhost;dbname=mydb
user = root
password = ""

Interactive usage

Type the initial INI file:

$ respect interactive --myconfig.ini

Tab to auto-complete to container keys:

$ db 

Tab again to auto-complete to methods/properties/constructor-parameters of that instance:

$ db query 

Type your commands:

$ db query 'SHOW TABLES'
@henriquemoody
Copy link

Great idea, let's code?

@alganet
Copy link
Author

alganet commented Feb 14, 2012

@augustohp
Copy link

The interative part i have no fucking idea of how to code, BUT, great idea. =D

@alganet
Copy link
Author

alganet commented Feb 14, 2012

We leave the interactiveness for the future. Probably a lot of Reflection to auto-complete these guys and a lot of dynamic Respect\Config containers being altered in runtime.

@ncuesta
Copy link

ncuesta commented Feb 23, 2012

I don't know if this would help you, but I'm developing Clinner a CLI commands abstraction for PHP5.3+ which allows to run and chain both CLI commands and PHP functions. If you feel like it, you can check it out here.

@alganet
Copy link
Author

alganet commented Feb 23, 2012

@ncuesta I do like your approach on Clinner! I have some suggestions on the API/Interface for it, let me know if you are willing to know them =D Not sure how I would use it in Respect\Cli yet, but for sure it will be very handy on other projects.

@ncuesta
Copy link

ncuesta commented Feb 23, 2012

Hey @alganet, Clinner's issues are open :) I'm always available for other points of view. Thanks! And if you would like any kind of help on this, I'd be more than happy to help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment