laminas-api-tools / api-tools-skeleton
Skeleton Application for Laminas API Tools
Fund package maintenance!
Community Bridge
Installs: 19 953
Dependents: 0
Suggesters: 0
Security: 0
Stars: 50
Watchers: 13
Forks: 64
Open Issues: 28
Type:project
Requires
- php: ~8.0.0 || ~8.1.0 || ~8.2.0
- laminas-api-tools/api-tools: ^1.7
- laminas-api-tools/api-tools-content-negotiation: ^1.8
- laminas-api-tools/api-tools-documentation: ^1.6
- laminas-api-tools/api-tools-rest: ^1.8
- laminas/laminas-component-installer: ^3.1
- laminas/laminas-development-mode: ^3.9
Requires (Dev)
- laminas-api-tools/api-tools-admin: ^2.1
- laminas-api-tools/api-tools-asset-manager: ^1.6
- laminas/laminas-cli: ^1.6
- laminas/laminas-coding-standard: ~2.3.0
- laminas/laminas-composer-autoloading: ^3.1
- laminas/laminas-developer-tools: ^2.6
- laminas/laminas-test: ^4.4
- phpunit/phpunit: ^9.5.20
- psalm/plugin-phpunit: ^0.16.1
- roave/security-advisories: dev-master
- vimeo/psalm: ^4.10
Suggests
- laminas-api-tools/api-tools-doctrine: laminas-api-tools/api-tools-doctrine ^2.2 to create Doctrine-Connected REST services
- laminas-api-tools/api-tools-http-cache: laminas-api-tools/api-tools-http-cache ^1.4 to add HTTP caching to your API
- zfr/zfr-cors: zfr/zfr-cors ^1.5 to add CORS support to your API
Conflicts
- laminas/laminas-hydrator: <2.0
- laminas/laminas-stdlib: <3.2.1
- laminas/laminas-view: <2.10.1
- 1.10.x-dev
- 1.9.x-dev
- 1.9.0
- 1.8.x-dev
- 1.8.0
- 1.7.x-dev
- 1.7.0
- 1.6.x-dev
- 1.6.0
- 1.5.x-dev
- 1.5.3
- 1.5.2p1
- 1.5.2
- 1.5.1p1
- 1.5.1
- 1.5.0p1
- 1.5.0
- 1.4.2p1
- 1.4.2
- 1.4.1p1
- 1.4.1
- 1.4.0p1
- 1.4.0
- 1.3.3p1
- 1.3.3
- 1.3.2p1
- 1.3.2
- 1.3.1p1
- 1.3.1
- 1.3.0p1
- 1.3.0
- 1.2.1
- 1.2.0p1
- 1.2.0
- 1.1.1p1
- 1.1.1
- 1.1.0p1
- 1.1.0
- 1.0.5p1
- 1.0.5
- 1.0.4p1
- 1.0.4
- 1.0.3p1
- 1.0.3
- 1.0.2p1
- 1.0.2
- 1.0.1p1
- 1.0.1
- 1.0.0p1
- 1.0.0
- 1.0.0beta3
- 1.0.0beta2
- 1.0.0beta1
- 0.9.1p1
- 0.9.1
- 0.9.0p1
- 0.9.0
- 0.8.0p1
- 0.8.0
- 0.7.0p1
- 0.7.0
- 0.6.0p1
- 0.6.0
This package is auto-updated.
Last update: 2024-11-12 22:32:43 UTC
README
π·πΊ Π ΡΡΡΠΊΠΈΠΌ Π³ΡΠ°ΠΆΠ΄Π°Π½Π°ΠΌ
ΠΡ, ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΈ Laminas, ΡΠΎΠ΄ΠΈΠ»ΠΈΡΡ ΠΈ ΠΆΠΈΠ²Π΅ΠΌ Π² ΡΠ°Π·Π½ΡΡ ΡΡΡΠ°Π½Π°Ρ . Π£ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΈΠ· Π½Π°Ρ Π΅ΡΡΡ Π΄ΡΡΠ·ΡΡ, ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠΈ ΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΊΠ°ΠΊ Π² Π ΠΎΡΡΠΈΠΈ, ΡΠ°ΠΊ ΠΈ Π² Π£ΠΊΡΠ°ΠΈΠ½Π΅. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½Π°Ρ ΡΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π² Π ΠΎΡΡΠΈΠΈ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½Π°Ρ ΠΆΠΈΠ²ΡΡ Π² Π ΠΎΡΡΠΈΠΈ. Π£ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π±Π°Π±ΡΡΠΊΠΈ ΠΈ Π΄Π΅Π΄ΡΡΠΊΠΈ ΡΡΠ°ΠΆΠ°Π»ΠΈΡΡ Ρ ΡΠ°ΡΠΈΡΡΠ°ΠΌΠΈ Π²ΠΎ ΠΡΠΎΡΠΎΠΉ ΠΌΠΈΡΠΎΠ²ΠΎΠΉ Π²ΠΎΠΉΠ½Π΅. ΠΠ΄Π΅ΡΡ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΡΠΈΠ·ΠΌ.
Π£ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½Π°Ρ Π΅ΡΡΡ ΡΠΊΡΠ°ΠΈΠ½ΡΠΊΠ°Ρ ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΏΠ°ΡΠ»Π°ΡΡ ΠΈΠ· Π΄ΠΎΠΌΠ° Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΡΠ½ΠΎΠΌ. ΠΠΎΠ΅Π·Π΄ Π·Π°Π΄Π΅ΡΠΆΠ°Π»ΡΡ ΠΈΠ·-Π·Π° Π±ΠΎΠΌΠ±Π΅ΠΆΠΊΠΈ Π½Π° Π΄ΠΎΡΠΎΠ³Π΅ Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ. Π£ Π½Π°Ρ Π΅ΡΡΡ Π΄ΡΡΠ·ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΡΡΡΡΡΡ Π² Π±ΠΎΠΌΠ±ΠΎΡΠ±Π΅ΠΆΠΈΡΠ°Ρ . ΠΡ Ρ ΡΡΠ΅Π²ΠΎΠ³ΠΎΠΉ ΠΆΠ΄Π΅ΠΌ Π²Π΅ΡΡΠΎΡΠΊΠΈ ΠΎΡ Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π²ΠΎΠ·Π΄ΡΡΠ½ΡΡ Π½Π°Π»Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ½ΠΎ Π½Π°Π½ΠΎΡΡΡ ΡΠ΄Π°ΡΡ ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ ΠΏΠΎ Π±ΠΎΠ»ΡΠ½ΠΈΡΠ°ΠΌ, ΡΠΊΠΎΠ»Π°ΠΌ, Π΄Π΅ΡΡΠΊΠΈΠΌ ΡΠ°Π΄Π°ΠΌ ΠΈ Π΄ΠΎΠΌΠ°ΠΌ. ΠΡ Π½Π΅ Π±Π΅ΡΠ΅ΠΌ ΡΡΠΎ ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π‘ΠΠ. ΠΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌ ΡΡΠΎ Π½Π°ΠΏΡΡΠΌΡΡ.
ΠΡ Π΄ΠΎΠ²Π΅ΡΡΠ΅ΡΠ΅ Π½Π°ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ ΠΌΡ ΠΏΡΠΎΡΠΈΠΌ Π²Π°Ρ Π΄ΠΎΠ²Π΅ΡΠΈΡΡΡΡ Π½Π°ΠΌ Π²Π½ΠΎΠ²Ρ. ΠΡ Π½ΡΠΆΠ΄Π°Π΅ΠΌΡΡ Π² ΠΏΠΎΠΌΠΎΡΠΈ. ΠΡΡ ΠΎΠ΄ΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡΠΉΡΠ΅ ΠΏΡΠΎΡΠΈΠ² ΡΡΠΎΠΉ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π²ΠΎΠΉΠ½Ρ. ΠΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΊΡΠΎΠ²ΠΎΠΏΡΠΎΠ»ΠΈΡΠΈΠ΅. Π‘ΠΊΠ°ΠΆΠΈΡΠ΅ "ΠΠ΅Ρ Π²ΠΎΠΉΠ½Π΅!"
πΊπΈ To Citizens of Russia
We at Laminas come from all over the world. Many of us have friends, family and colleagues in both Russia and Ukraine. Some of us were born in Russia. Some of us currently live in Russia. Some have grandparents who fought Nazis in World War II. Nobody here supports fascism.
One team member has a Ukrainian relative who fled her home with her son. The train was delayed due to bombing on the road ahead. We have friends who are hiding in bomb shelters. We anxiously follow up on them after the air raids, which indiscriminately fire at hospitals, schools, kindergartens and houses. We're not taking this from any media. These are our actual experiences.
You trust us enough to use our software. We ask that you trust us to say the truth on this. We need your help. Go out and protest this unnecessary war. Stop the bloodshed. Say "stop the war!"
Requirements
Please see the composer.json file.
Installation
Via release tarball
Grab the latest release via the Laminas API Tools website and/or the releases page; each release has distribution tarballs and zipballs available.
Untar it:
$ tar xzf api-tools-skeleton-{version}.tgz
(Where {version}
is the version you downloaded.)
Or unzip, if you chose the zipball:
$ unzip api-tools-skeleton-{version}.zip
(Where {version}
is the version you downloaded.)
Via Composer (create-project)
You can use the create-project
command from Composer
to create the project in one go (you need to install composer):
$ curl -s https://getcomposer.org/installer | php -- --filename=composer
$ composer create-project -sdev laminas-api-tools/api-tools-skeleton path/to/install
Via Git (clone)
First, clone the repository:
# git clone https://github.com/laminas-api-tools/api-tools-skeleton.git # optionally, specify the directory in which to clone $ cd path/to/install
At this point, you need to use Composer to install dependencies. Assuming you already have Composer:
$ composer install
All methods
Once you have the basic installation, you need to put it in development mode:
$ cd path/to/install
$ composer development-enable
Now, fire it up! Do one of the following:
- Create a vhost in your web server that points the DocumentRoot to the
public/
directory of the project - Fire up the built-in web server in PHP(note: do not use this for production!)
In the latter case, do the following:
$ cd path/to/install $ php -S 0.0.0.0:8080 -ddisplay_errors=0 -t public public/index.php # OR use the composer alias: $ composer serve
You can then visit the site at http://localhost:8080/ - which will bring up a welcome page and the ability to visit the dashboard in order to create and inspect your APIs.
NOTE ABOUT USING APACHE
Apache forbids the character sequences %2F
and %5C
in URI paths. However, the Laminas API Tools Admin
API uses these characters for a number of service endpoints. As such, if you wish to use the
Admin UI and/or Admin API with Apache, you will need to configure your Apache vhost/project to
allow encoded slashes:
AllowEncodedSlashes On
This change will need to be made in your server's vhost file (it cannot be added to .htaccess
).
NOTE ABOUT OPCACHE
Disable all opcode caches when running the admin!
The admin cannot and will not run correctly when an opcode cache, such as APC or OpCache, is enabled. Laminas API Tools does not use a database to store configuration; instead, it uses PHP configuration files. Opcode caches will cache these files on first load, leading to inconsistencies as you write to them, and will typically lead to a state where the admin API and code become unusable.
The admin is a development tool, and intended for use a development environment. As such, you should likely disable opcode caching, regardless.
When you are ready to deploy your API to production, however, you can disable development mode, thus disabling the admin interface, and safely run an opcode cache again. Doing so is recommended for production due to the tremendous performance benefits opcode caches provide.
NOTE ABOUT DISPLAY_ERRORS
The display_errors
php.ini
setting is useful in development to understand what warnings,
notices, and error conditions are affecting your application. However, they cause problems for APIs:
APIs are typically a specific serialization format, and error reporting is usually in either plain
text, or, with extensions like XDebug, in HTML. This breaks the response payload, making it unusable
by clients.
For this reason, we recommend disabling display_errors
when using the Laminas API Tools admin interface.
This can be done using the -ddisplay_errors=0
flag when using the built-in PHP web server, or you
can set it in your virtual host or server definition. If you disable it, make sure you have
reasonable error log settings in place. For the built-in PHP web server, errors will be reported in
the console itself; otherwise, ensure you have an error log file specified in your configuration.
display_errors
should never be enabled in production, regardless.
Vagrant
If you prefer to develop with Vagrant, there is a basic vagrant recipe included with this project.
This recipe assumes that you already have Vagrant installed. The virtual machine will try to use localhost:8080 by default, so if you already have a server on this port of your host machine, you need to shut down the conflicting server first, or if you know how, you can reconfigure the ports in Vagrantfile.
Assuming you have Vagrant installed and assuming you have no port conflicts, you can bring up the Vagrant machine
with the standard up
command:
$ vagrant up
When the machine comes up, you can ssh to it with the standard ssh forward agent:
$ vagrant ssh
The web root is inside the shared directory, which is at /var/www
; this is
also the home directory for the vagrant issue, which will be the initial
directory you land in once you connect via SSH.
The image installs composer during provisioning, meaning you can use it to install and update dependencies:
# Install dependencies: $ vagrant ssh -c 'composer install' # Update dependencies: $ vagrant ssh -c 'composer update'
You can also manipulate development mode:
$ vagrant ssh -c 'composer development-enable' $ vagrant ssh -c 'composer development-disable' $ vagrant ssh -c 'composer development-status'
Vagrant and VirtualBox
The vagrant image is based on
bento/ubuntu-16.04
. If you are using VirtualBox as a provider, you will need:
- Vagrant 1.8.5 or later
- VirtualBox 5.0.26 or later
For vagrant documentation, please refer to vagrantup.com
Docker
If you develop or deploy using Docker, we provide configuration for you.
Prepare your development environment using docker compose:
$ git clone https://github.com/laminas-api-tools/api-tools-skeleton $ cd api-tools-skeleton $ docker-compose build # Install dependencies via composer, if you haven't already: $ docker-compose run api-tools composer install # Enable development mode: $ docker-compose run api-tools composer development-enable
Start the container:
$ docker-compose up
Access Laminas API Tools from http://localhost:8080/
or http://<boot2docker ip>:8080/
if on Windows or Mac.
You may also use the provided Dockerfile
directly if desired.
Once installed, you can use the container to update dependencies:
$ docker-compose run api-tools composer update
Or to manipulate development mode:
$ docker-compose run api-tools composer development-enable $ docker-compose run api-tools composer development-disable $ docker-compose run api-tools composer development-status
QA Tools
The skeleton ships with minimal QA tooling by default, including
laminas/laminas-test. We supply basic tests for the shipped
Application\Controller\IndexController
.
We also ship with configuration for phpcs. If you wish to add this QA tool, execute the following:
$ composer require --dev squizlabs/php_codesniffer
We provide aliases for each of these tools in the Composer configuration:
# Run CS checks: $ composer cs-check # Fix CS errors: $ composer cs-fix # Run PHPUnit tests: $ composer test