summaryrefslogtreecommitdiff
path: root/demos/quickstart/protected/pages/Fundamentals/Applications.page
blob: c64a9ea45f525a2b59a6e9b1562292199353270a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<com:TContent ID="body" >

<h1>Applications</h1>
<p>
An application is an instance of <code>TApplication</code> or its derived class. It manages modules that provide different functionalities and are loaded when needed. It provides services to end-users. It is the central place to store various parameters used in an application. In a PRADO application, the application instance is the only object that is globally accessible via <code>Prado::getApplication()</code> function call.
</p>
<p>
Applications are configured via <a href="?page=Configurations.AppConfig">application configurations</a>. They are usually created entry scripts like the following,
<pre class="source">
require_once('/path/to/prado.php');
$application = new TApplication;
$application-&gt;run();
</pre>
where the method <code>run()</code> starts the application to handle user requests.
</p>

<h2>Directory Organization</h2>
<p>
A minimal PRADO application contains two files: an entry file and a page template file. They must be organized as follows,
<img src="<%~directory.gif%>" />
<ul>
<li><code>wwwroot</code> - Web document root or sub-directory.</li>
<li><code>index.php</code> - entry script of the PRADO application.</li>
<li><code>assets</code> - directory storing published private files. See <a href="?page=Advanced.Assets">assets</a> section.</li>
<li><code>protected</code> - application base path storing application data and private script files. This directory should be configured inaccessible to Web-inaccessible, or it may be located outside of Web directories.</li>
<li><code>runtime</code> - application runtime storage path. This directory is used by PRADO to store application runtime information, such as application state, cached data, etc.</li>
<li><code>pages</code> - base path storing all PRADO pages. See <a href="?page=Fundamentals.Services">services</a> section.</li>
<li><code>Home.page</code> - default page returned when users do not explicitly specify the page requested. This is a page template file. The file name without suffix is the page name. The page class is <code>TPage</code>. If there is also a class file <code>Home.php</code>, the page class becomes <code>Home</code>.</li>
</ul>
</p>
<p>
A product PRADO application usually needs more files. It may include an application configuration file named <code>application.xml</code> under the application base path <code>protected</code>. The pages may be organized in directories, some of which may contain page configuration files named <code>config.xml</code>. Fore more details, please see <a href="?page=Configurations.Overview">configurations</a> section.
</p>

<h2>Application Deployment</h2>
<p>
Deploying a PRADO application mainly involves copying directories. For example, to deploy the above minimal application to another server, follow the following steps,
<ol>
<li>Copy the content under <code>wwwroot</code> to a Web-accessible directory on the new server.</li>
<li>Modify the entry script file <code>index.php</code> so that it includes correctly the <code>prado.php</code> file.</li>
<li>Remove all content under <code>assets</code> and <code>runtime</code> directories and make sure both directories are writable by the Web server process.</li>
</ol>
</p>

<h2>Application Lifecycles</h2>
<p>
Like page lifecycles, an application also has lifecycles. Application modules can register for the lifecycle events. When the application reaches a particular lifecycle and raises the corresponding event, the registered module methods are invoked automatically. Modules included in the PRADO release, such as <code>TAuthManager</code>, are using this way to accomplish their goals.
</p>
<p>
The application lifecycles can be depicted as follows,
</p>
<img src="<%~applifecycles.gif%>" />

</com:TContent>