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:         4.20 msec
Page Memory:   512.13k
docs / viewController / view (200)
Request UUID: 5a2e4c46a195f2.11391741
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.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
Thu, 19 Oct 2017 20:11:29 GMT
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
44904
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
1512983622.661
REQUEST_TIME
1512983622
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.308 DEBUG 309.77 Configuration loaded:
Array
(
    [0] => app_prod.yml
    [1] => config_prod.yml
)
2 2.593 DEBUG 323.38 Listener "kernel.terminate[webprofiler]" has been added because of hathoora.logger.webprofiler.enabled
3 2.786 DEBUG 326.77 Event kernel.ready has been registered.
4 2.887 DEBUG 335.15 Calling App dispatcher (Array ( [class] => customDispatcher [method] => dispatch ) )...
5 2.960 DEBUG 349.56 Event kernel.route has been registered.
6 3.073 DEBUG 378.93 Event kernel.controller has been registered.
7 3.095 DEBUG 379.88 Calling controller (\docs\controller\viewController::view) with following params
Array
(
    [0] => v1
    [1] => installation
)
8 3.366 INFO 467.23 Template (docs/v1/installation.tpl.php) loaded
9 3.459 INFO 473.21 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/htmlMeta.tpl.php) loaded
10 3.513 INFO 474.46 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/flashMessages.tpl.php) loaded
11 4.021 INFO 437.43 Template (docs.tpl.php) fetched.
12 4.048 DEBUG 437.02 Event kernel.response has been registered.
13 4.065 DEBUG 438.21 Event kernel.terminate has been registered.
14 4.114 DEBUG 441.43 Event kernel.terminate->webprofiler has been notified.
Profiling
template
# Time (msec) Name Cached Took (msec)
1 3.142 docs.tpl.php 0 0.827