fol/fol

PHP framework

Installs: 139

Dependents: 0

Suggesters: 0

Stars: 6

Watchers: 1

Forks: 1

Open Issues: 0


README

(o resto da gaita xa é cousa túa)

Build Status PPM Compatible

FOL é un (micro)framework escrito en PHP por Oscar Otero. Como é algo persoal que non pretende ter moita repercusión (hai miles de frameworks en PHP), escribo a documentación en galego por comodidade e por se alguen máis de aquí lle interesa.

Requerimentos:

  • PHP 5.5+
  • Composer
  • Node 4+

Instalación

composer create-project fol/fol o-meu-proxecto
cd o-meu-proxecto
npm install
cp .env.example .env
mkdir -m 0777 data
mkdir -m 0777 data/logs

App

A clase App\App (aloxada en app/App.php) é a que xestiona a páxina web. Mira fol-core para máis información.

Liña de comandos

Fol usa Robo como xestor de tarefas. Polo que edita o arquivo RoboFile.php para meter aí os comandos que queiras.

Só hai un comando definido por defecto que é robo run, que o que fai é lanzar un servidor de php, executa gulp e usa BrowserSync para sincronizar os cambios.

Deploy

Podes usar Deployer para facer deploy ao servidor que queiras. Xa inclúe un arquivo deploy.php con toda a configuración que podes personalizar.

Gulp

Tamén trae un arquivo gulp preparado para xestionar os css/js/imgs. Os arquivos orixinais gárdanse no directorio "assets" e gulp procésaos e pásaos ao directorio "public".

PHP-PM

Se queres, tamén podes usar php-pm para lanzar a web. Tes que instalar o Psr-7 bridge:

# change minimum-stability to dev in your composer.json (until we have a version tagged): "minimum-stability": "dev"

composer require php-pm/php-pm:dev-master
composer require php-pm/psr7-adapter
php vendor/bin/ppm config --bootstrap=App\\PPM
php vendor/bin/ppm start

Configuración do servidor

En Apache

Xa hai un arquivo .htaccess preparado, simplemente tes que permitir usalo:

<Directory "/var/www/fol/public">
    AllowOverride All
</Directory>

Se queres meter o teu proxecto nun subdirectorio (por exemplo http://localhost/blog) podes poñer o proxecto fora do documentRoot e crear un alias:

<IfModule alias_module>
    Alias /blog /var/www/blog/public
</IfModule>

<Directory "/var/www/blog/public">
    Options +FollowSymLinks
    AllowOverride All
</Directory>

Para que alias funcione, necesitas usar a directiva RewriteBase no .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /blog/

    # Handle front controller
    RewriteCond %{REQUEST_FILENAME}/index.html !-f
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

En Nginx

Tes que editar o arquivo de configuración (nginx/sites-enabled/default):

server {
    root /var/www/fol/public;

    charset utf-8;

    location ~* \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    # Deny access for hidden
    location ~ /\. {
        deny all;
    }

    # Manage all request
    location / {
        try_files $uri @public;
    }

    # Headers for assets
    location ~* .*\.(css|js|jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc|woff|eot|ttf)$ {
        expires 1M;
        access_log off;
        add_header Cache-Control "public";
        try_files $uri @public;
    }

    # This is the public location, called in each request
    location @public {
        if (!-f $request_filename) {
            rewrite ^(.*)$ /index.php last;
        }
    }
}