Fork me on GitHub

Installation

Composer

Composer is a dependency management library for PHP, which you can use to download the Hathoora PHP Framework.

Start by downloading Composer anywhere onto your local computer. Alternatively if you have curl installed, then you can install it like so:

        
            curl -s https://getcomposer.org/installer | php
        
    

Next download Hathoora PHP Framework

        
            php composer.phar create-project -s "dev" hathoora/hathoora /some/path/hathoora
        
    

This command may take several minutes to run as Composer downloads Hathoora PHP Framework along with all of the vendor libraries that it needs. When it finishes, you should have a directory like this.

Finally install all dependencies.

        
            php composer.phar install
        
    

Source

Download the code from GitHub.

Apache Configuration

Apache (nginx or others) can be setup in many ways. Just make sure that the DocumentRoot is pointing to HATHOORA_ROOTPATH/docroot.

A sample Apache vhost configuration based on installation path of /some/path/hathoora/docroot is shown below:

        
             
            <VirtualHost *:80>
                DocumentRoot /some/path/hathoora/docroot
                ServerName mysite.com

                SetEnv HATHOORA_ENV prod

                <Directory /some/path/hathoora/docroot>
                    AllowOverride All
                </Directory>
            </VirtualHost>
        
    

Front Controller

In order for Hathoora PHP Framework to work, Apache RewriteEngine must be enabled. This has already been taken care of in HATHOORA_ROOTPATH/.htaccess file.

        
            RewriteEngine On

            # frontController
            RewriteCond %{REQUEST_URI} !^/_assets/ [NC]
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule  .* index.php  [L,QSA]
        
    

This would route all requests to index.php which would then pass it on to appropriate controller.


Inspired by HTML5 ★ Boilerplate, in addition to above front controller rewrite, .htaccess is equipped with other goodies like gzip compression, assets expiration and prevent GIT/SVN/etc files access. You can view the complete .htaccess file by clicking here.



At this point you should be able to visit http://localhost to view Hathoora PHP Framework sample apps.

Page Took:         5.34 msec
Page Memory:   512.08k
docs / viewController / view (200)
Request UUID: 5a328f5494cff2.80681214
Get
Post
Cookies
Files
Session
Server
Response
No data.
No data.
No data.
No data.
No data.
REDIRECT_HATHOORA_ENV
prod
REDIRECT_STATUS
200
HATHOORA_ENV
prod
HTTP_HOST
hathoora.org
HTTP_X_FORWARDED_FOR
54.221.93.187
HTTP_X_REAL_IP
54.221.93.187
HTTP_CONNECTION
close
HTTP_ACCEPT_ENCODING
x-gzip, gzip, deflate
HTTP_USER_AGENT
CCBot/2.0 (http://commoncrawl.org/faq/)
HTTP_ACCEPT
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_IF_MODIFIED_SINCE
Tue, 24 Oct 2017 11:04:16 GMT
PATH
/sbin:/usr/sbin:/bin:/usr/bin
SERVER_SIGNATURE
Apache/2.2.15 (CentOS) Server at hathoora.org Port 80
SERVER_SOFTWARE
Apache/2.2.15 (CentOS)
SERVER_NAME
hathoora.org
SERVER_ADDR
192.168.1.11
SERVER_PORT
80
REMOTE_ADDR
207.126.164.119
DOCUMENT_ROOT
/var/websites/hathoora.org/docroot
SERVER_ADMIN
webmaster@hathoora.org
SCRIPT_FILENAME
/var/websites/hathoora.org/docroot/index.php
REMOTE_PORT
33134
REDIRECT_URL
/docs/v1/installation
GATEWAY_INTERFACE
CGI/1.1
SERVER_PROTOCOL
HTTP/1.0
REQUEST_METHOD
GET
QUERY_STRING
REQUEST_URI
/docs/v1/installation
SCRIPT_NAME
/index.php
PHP_SELF
/index.php
REQUEST_TIME_FLOAT
1513262932.608
REQUEST_TIME
1513262932
Status: 200
Headers:
Content-Type
text/html; charset=UTF-8
Configutation
Key Value
app.admin
Array
(
    [pattern] => /admin(|/)
    [directory] => hathoora
    [namespace] => hathoora\admin
)
app.docs
Array
(
    [pattern] => /docs(|/)
    [directory] => hathoora
    [dispatcher] => Array
        (
            [class] => customDispatcher
            [method] => dispatch
        )

)
app.site
Array
(
    [default] => 1
)
hathoora.logger
Array
(
    [profiling] => Array
        (
            [enabled] => 1
        )

    [logging] => Array
        (
            [enabled] => 1
            [level] => DEBUG
        )

    [webprofiler] => Array
        (
            [enabled] => 1
            [system] => 
            [show_redirects] => 
        )

)
hathoora.template
Array
(
    [engine] => Array
        (
            [name] => Stuob
        )

)
hathoora.database
Array
(
    [default] => mysql://dbuser:dbpassword@dbhost:3306/dbname
)
services.container
Array
(
    [class] => \hathoora\container
    [method] => getContainer
)
Logging (14)
hathoora.logger.logging.enabled: 1
# Time (msec) Level Memory (KB) Message
1 2.317 DEBUG 309.73 Configuration loaded:
Array
(
    [0] => app_prod.yml
    [1] => config_prod.yml
)
2 2.597 DEBUG 323.34 Listener "kernel.terminate[webprofiler]" has been added because of hathoora.logger.webprofiler.enabled
3 2.755 DEBUG 326.73 Event kernel.ready has been registered.
4 2.974 DEBUG 335.09 Calling App dispatcher (Array ( [class] => customDispatcher [method] => dispatch ) )...
5 3.133 DEBUG 349.52 Event kernel.route has been registered.
6 3.387 DEBUG 378.88 Event kernel.controller has been registered.
7 3.437 DEBUG 379.84 Calling controller (\docs\controller\viewController::view) with following params
Array
(
    [0] => v1
    [1] => installation
)
8 4.043 INFO 467.19 Template (docs/v1/installation.tpl.php) loaded
9 4.244 INFO 473.16 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/htmlMeta.tpl.php) loaded
10 4.369 INFO 474.41 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/flashMessages.tpl.php) loaded
11 5.165 INFO 437.38 Template (docs.tpl.php) fetched.
12 5.191 DEBUG 436.98 Event kernel.response has been registered.
13 5.208 DEBUG 438.16 Event kernel.terminate has been registered.
14 5.255 DEBUG 441.38 Event kernel.terminate->webprofiler has been notified.
Profiling
template
# Time (msec) Name Cached Took (msec)
1 3.540 docs.tpl.php 0 1.573