Installation

What you'll need:

  • · PHP 8.2 or newer.
  • · A web server (or just PHP's built-in web server for local developments).
  • · An activated URL-Rewrite feature for the web server.


What you'll do:

After creating your project folder, run the following command in:

git clone git@github.com:froq/sample.git . && composer install


Note: To manipulate autoloader, change autoload.psr-4 field in composer.json file. Otherwise, with a secondary look-up (as those "or" below indicate), all the autoload operations will be handled like in the example below as default by froq\Autoloader class (see getFile() source here), yet depending on their namespaces that start with these three: app\controller, app\repository, app\library.

Route      : /post (e.g: "api.foo.com/post" requests)

# Controllers.
Controller : app\controller\PostController => app/system/Post/PostController.php

# Repository & other data-related things.
Repository : app\repository\PostRepository => app/system/Post/PostRepository.php
                                           or app/system/Post/data/PostRepository.php
Entity     : app\repository\PostEntity     => app/system/Post/PostEntity.php
                                           or app/system/Post/data/PostEntity.php
EntityList : app\repository\PostEntityList => app/system/Post/PostEntityList.php
                                           or app/system/Post/data/PostEntityList.php
Query      : app\repository\PostQuery      => app/system/Post/PostQuery.php
                                           or app/system/Post/data/PostQuery.php
Search     : app\repository\PostSearch     => app/system/Post/PostSearch.php
                                           or app/system/Post/data/PostSearch.php
Resource   : app\repository\PostResource   => app/system/Post/PostResource.php
                                           or app/system/Post/data/PostResource.php
DTOs       : app\repository\PostDto        => app/system/Post/PostDto.php
                                           or app/system/Post/data/PostDto.php
# Library items.
Library    : app\library\PostHelper        => app/library/PostHelper.php


Local Development with Built-in Web Server

# As current user.
php -S localhost:8080 bin/server.php
# Or with public (static) folder.
php -S localhost:8080 -t pub/ bin/server.php

# As another user.
sudo -u www-data php -S localhost:8080 bin/server.php
# Or with public (static) folder.
sudo -u www-data php -S localhost:8080 -t pub/ bin/server.php

Configuration

Froq! runs almost with 0 option, except needed routes options that set in app/config/routes.php file and included into app/config/config.php file at top.

In this file, you will find more options that you may want to change by your needs. If you want a Dot-Env file for your configurations, use dotenv option to address this file.

As an example, here is the view options to tell the View component that it will use a directory as base for all view files and a layout file as a main file to print $CONTENT into.

'view' => ['base' => APP_DIR . '/app/system/view',
           'layout' => APP_DIR . '/app/system/view/layout.php']

Web Servers

The configurations below are enough for Froq! to run, but you can add more options as needed. Also /var/www is just a general path and can be changed as well.

Note: If you do not want to work completely on PHP's built-in server, remember to modify /etc/hosts for local developements (e.g. for example.com.local, add this line: 127.0.0.1 example.com.local). Plus, Froq! automatically detects and sets the application environment just checking TLD. If it is .local or .localhost it sets App::$env as developement and both App::isLocal() and __local__, __LOCAL__ constants will be true. It is also checked if $_SERVER['SERVER_NAME'] is localhost or 127.0.0.1 by the way.


Nginx

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com/pub;
    index index.php;
    location / {
       try_files $uri $uri/ /index.php?$args;
    }
    # Don't miss PHP options here!
}


Apache

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example.com/pub
    <Directory /var/www/example.com/pub>
        Options +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
Getting Started Installation Configuration Web Servers
Application & Components Application Controller Repository View Routing
HTTP & Components Request Response Payloads
Database & Components Database Queries & Results Transactions Entities
Utilities Sugars Sugar Classes Sugar Functions Sugar Constants
Froq! Framework · Home · Docs · API · GitHub