werx / url
Build urls to resources in your app
Installs: 5 457
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: >= 5.4
- league/plates: 2.1.0
- rize/uri-template: 0.2.*
Requires (Dev)
- phpunit/phpunit: 4.4.*
- squizlabs/php_codesniffer: 1.*
This package is auto-updated.
Last update: 2024-10-29 03:38:06 UTC
README
Build urls to resources in your app. Available as a standalone library or as a Plates Extension.
This library uses rize\UriTemplate for the heavy lifting of expanding urls with additional functionality to make it easier to build urls to resources within your application.
Usage
Creating an instance of the url builder.
Get an instance of the url builder. If you pass no constructor values, it will base all urls on the root-relative path to the currently executing script using $_SERVER['SCRIPT_NAME']
.
$builder = new \werx\Url\Builder;
You can also provide a base url and script name.
$builder = new \werx\Url\Builder('/path/to/app/', 'index.php');
If you set a fully qualified url in the constructor, it will be used when building urls.
$builder = new \werx\Url\Builder('http://example.com/path/to/app/', 'index.php');
Building URLs.
Simple pattern replacement with a single id
$url = $builder->action('home/details/{id}', 5); var_dump($url); # /path/to/app/index.php/home/details/5
Multiple pattern replacements
$url = $builder->action('home/{action}/{id}', ['action' => 'details', 'id' => 5]); var_dump($url); # /path/to/app/index.php/home/details/5
Convert an array to a query string.
$url = $builder->query('home/search', ['name' => 'Josh', 'state' => 'AR']); var_dump($url); # /path/to/app/index.php/home/search?name=Josh&state=AR
Build an url to a static resource in your application.
$url = $builder->asset('images/logo.png'); var_dump($url); # /path/to/app/images/logo.png
Plates Extension
This library includes an extension that allows it to be used within Plates Templates.
In your controller...
$engine = new \League\Plates\Engine('/path/to/templates'); $ext = new \werx\Url\Extensions\Plates; $engine->loadExtension($ext); $template = new \League\Plates\Template($engine); $output = $template->render('home');
Then in your view, you can call any of the werx\Url\Builder
methods via $this->url()->methodtocall()
.
<a href="<?=$this->url()->action(home/details/{id}, 5)?>">Details</a> <img src="<?=$this->url()->asset('images/logo.png')?>"/>
Installation
This package is installable and autoloadable via Composer as werx/url. If you aren't familiar with the Composer Dependency Manager for PHP, you should read this first.
$ composer require werx/url --prefer-dist
Contributing
Unit Testing
$ vendor/bin/phpunit
Coding Standards
This library uses PHP_CodeSniffer to ensure coding standards are followed.
I have adopted the PHP FIG PSR-2 Coding Standard EXCEPT for the tabs vs spaces for indentation rule. PSR-2 says 4 spaces. I use tabs. No discussion.
To support indenting with tabs, I've defined a custom PSR-2 ruleset that extends the standard PSR-2 ruleset used by PHP_CodeSniffer. You can find this ruleset in the root of this project at PSR2Tabs.xml
Executing the codesniffer command from the root of this project to run the sniffer using these custom rules.
$ ./codesniffer