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.92 msec
Page Memory:   511.56k
docs / viewController / view (200)
Request UUID: 59521a3e570c95.02155431
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
www.hathoora.org
HTTP_X_FORWARDED_FOR
54.224.77.47
HTTP_X_REAL_IP
54.224.77.47
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
PATH
/sbin:/usr/sbin:/bin:/usr/bin
SERVER_SIGNATURE
Apache/2.2.15 (CentOS) Server at www.hathoora.org Port 80
SERVER_SOFTWARE
Apache/2.2.15 (CentOS)
SERVER_NAME
www.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
58712
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
1498552894.355
REQUEST_TIME
1498552894
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.275 DEBUG 309.34 Configuration loaded:
Array
(
    [0] => app_prod.yml
    [1] => config_prod.yml
)
2 2.549 DEBUG 322.95 Listener "kernel.terminate[webprofiler]" has been added because of hathoora.logger.webprofiler.enabled
3 2.710 DEBUG 326.34 Event kernel.ready has been registered.
4 2.908 DEBUG 334.72 Calling App dispatcher (Array ( [class] => customDispatcher [method] => dispatch ) )...
5 3.082 DEBUG 349.02 Event kernel.route has been registered.
6 3.333 DEBUG 378.37 Event kernel.controller has been registered.
7 3.384 DEBUG 379.32 Calling controller (\docs\controller\viewController::view) with following params
Array
(
    [0] => v1
    [1] => installation
)
8 3.977 INFO 466.67 Template (docs/v1/installation.tpl.php) loaded
9 4.225 INFO 472.65 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/htmlMeta.tpl.php) loaded
10 4.348 INFO 473.90 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/flashMessages.tpl.php) loaded
11 5.532 INFO 436.87 Template (docs.tpl.php) fetched.
12 5.592 DEBUG 436.46 Event kernel.response has been registered.
13 5.633 DEBUG 437.65 Event kernel.terminate has been registered.
14 5.741 DEBUG 440.87 Event kernel.terminate->webprofiler has been notified.
Profiling
template
# Time (msec) Name Cached Took (msec)
1 3.486 docs.tpl.php 0 1.929