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:         6.12 msec
Page Memory:   512.08k
docs / viewController / view (200)
Request UUID: 59ef1e306e10a7.78912586
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.166.203.76
HTTP_X_REAL_IP
54.166.203.76
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
Fri, 18 Aug 2017 01:01:11 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
46004
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
1508843056.45
REQUEST_TIME
1508843056
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.303 DEBUG 309.73 Configuration loaded:
Array
(
    [0] => app_prod.yml
    [1] => config_prod.yml
)
2 2.604 DEBUG 323.34 Listener "kernel.terminate[webprofiler]" has been added because of hathoora.logger.webprofiler.enabled
3 2.773 DEBUG 326.73 Event kernel.ready has been registered.
4 2.978 DEBUG 335.09 Calling App dispatcher (Array ( [class] => customDispatcher [method] => dispatch ) )...
5 3.134 DEBUG 349.52 Event kernel.route has been registered.
6 3.388 DEBUG 378.88 Event kernel.controller has been registered.
7 3.439 DEBUG 379.84 Calling controller (\docs\controller\viewController::view) with following params
Array
(
    [0] => v1
    [1] => installation
)
8 4.187 INFO 467.19 Template (docs/v1/installation.tpl.php) loaded
9 4.418 INFO 473.16 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/htmlMeta.tpl.php) loaded
10 4.549 INFO 474.41 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/flashMessages.tpl.php) loaded
11 5.724 INFO 437.38 Template (docs.tpl.php) fetched.
12 5.785 DEBUG 436.98 Event kernel.response has been registered.
13 5.826 DEBUG 438.16 Event kernel.terminate has been registered.
14 5.935 DEBUG 441.38 Event kernel.terminate->webprofiler has been notified.
Profiling
template
# Time (msec) Name Cached Took (msec)
1 3.655 docs.tpl.php 0 1.950