<html>
<head>
<title>The Trax Naming Convention</title>
<link rel="stylesheet" type="text/css" href="../media/style.css">
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0" height="48" width="100%">
<tr>
<td class="header_top">PHPonTrax</td>
</tr>
<tr><td class="header_line"><img src="../media/empty.png" width="1" height="1" border="0" alt="" /></td></tr>
<tr>
<td class="header_menu">
[ <a href="../classtrees_PHPonTrax.html" class="menu">class tree: PHPonTrax</a> ]
[ <a href="../elementindex_PHPonTrax.html" class="menu">index: PHPonTrax</a> ]
[ <a href="../elementindex.html" class="menu">all elements</a> ]
</td>
</tr>
<tr><td class="header_line"><img src="../media/empty.png" width="1" height="1" border="0" alt="" /></td></tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="200" class="menu">
<div id="todolist">
<p><a href="../todolist.html">Todo List</a></p>
</div>
<b>Packages:</b><br />
<a href="../li_PHPonTrax.html">PHPonTrax</a><br />
<a href="../li_PHPonTraxTest.html">PHPonTraxTest</a><br />
<br /><br />
<b>Tutorials/Manuals:</b><br />
<strong>Package-level:</strong>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_PHPonTrax.pkg.html">PHP On Trax</a>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_rails_examples.pkg.html">Examples From The Rails Book</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_simpleapp.pkg.html">Build A Simple Trax Application</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_database.pkg.html">Create A Database and User</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_advbuild.pkg.html">Advanced Application Build Topics</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_naming.pkg.html">The Trax Naming Convention</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_troubleshoot.pkg.html">Troubleshooting</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_reference.pkg.html">Reference</a>
</ul>
</li></ul>
<strong>Class-level:</strong>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ActiveRecordHelper.cls.html">ActiveRecordHelper</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_FormTagHelper.cls.html">FormTagHelper</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_Helpers.cls.html">Helpers</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_UrlHelper.cls.html">UrlHelper</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_FormHelper.cls.html">FormHelper</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_InputFilter.cls.html">InputFilter</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ActionMailer.cls.html">ActionMailer</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ApplicationController.cls.html">ApplicationController</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ActionController.cls.html">ActionController</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ActiveRecord.cls.html">ActiveRecord</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_DateHelper.cls.html">DateHelper</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_Router.cls.html">Router</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_FormOptionsHelper.cls.html">FormOptionsHelper</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_TraxGenerator.cls.html">TraxGenerator</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_Session.cls.html">Session</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_Inflector.cls.html">Inflector</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ActiveRecordError.cls.html">ActiveRecordError</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ActionControllerError.cls.html">ActionControllerError</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ScaffoldController.cls.html">ScaffoldController</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_Dispatcher.cls.html">Dispatcher</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_TraxError.cls.html">TraxError</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ApplicationMailer.cls.html">ApplicationMailer</a>
</ul>
<b>Files:</b><br />
<div class="package">
<a href="../PHPonTrax/_vendor_trax_action_controller_php.html"> action_controller.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_mailer_php.html"> action_mailer.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_php.html"> action_view.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_active_record_php.html"> active_record.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_active_record_helper_php.html"> active_record_helper.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_add_phtml.html"> add.phtml
</a><br>
<a href="../PHPonTrax/_data_app_controllers_application_php.html"> application.php
</a><br>
<a href="../PHPonTrax/_data_app_views_layouts_application_phtml.html"> application.phtml
</a><br>
<a href="../PHPonTrax/_data_app_helpers_application_helper_php.html"> application_helper.php
</a><br>
<a href="../PHPonTrax/_data_app_application_mailer_php.html"> application_mailer.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_asset_tag_helper_php.html"> asset_tag_helper.php
</a><br>
<a href="../PHPonTrax/_test_layouts_catalog_phtml.html"> catalog.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_controller_php.html"> controller.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_controller_php.html"> controller.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_date_helper_php.html"> date_helper.php
</a><br>
<a href="../PHPonTrax/_data_config_environments_development_php.html"> development.php
</a><br>
<a href="../PHPonTrax/_data_public_dispatch_php.html"> dispatch.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_dispatcher_php.html"> dispatcher.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_edit_phtml.html"> edit.phtml
</a><br>
<a href="../PHPonTrax/_data_config_environment_php.html"> environment.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_error_phtml.html"> error.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_form_helper_php.html"> form_helper.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_form_options_helper_php.html"> form_options_helper.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_form_scaffolding_phtml.html"> form_scaffolding.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_form_tag_helper_php.html"> form_tag_helper.php
</a><br>
<a href="../PHPonTrax/_data_script_generate_php.html"> generate.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_helper_php.html"> helper.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_php.html"> helpers.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_index_phtml.html"> index.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_inflector_php.html"> inflector.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_input_filter_php.html"> input_filter.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_javascript_helper_php.html"> javascript_helper.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_layout_phtml.html"> layout.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_layout_phtml.html"> layout.phtml
</a><br>
<a href="../PHPonTrax/_makepkg_php.html"> makepkg.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_model_php.html"> model.php
</a><br>
<a href="../PHPonTrax/_data_config_environments_production_php.html"> production.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_router_php.html"> router.php
</a><br>
<a href="../PHPonTrax/_data_config_routes_php.html"> routes.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_scaffold_controller_php.html"> scaffold_controller.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_session_php.html"> session.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_show_phtml.html"> show.phtml
</a><br>
<a href="../PHPonTrax/_data_config_environments_test_php.html"> test.php
</a><br>
<a href="../PHPonTrax/_trax_php.html"> trax.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_trax_exceptions_php.html"> trax_exceptions.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_trax_generator_php.html"> trax_generator.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_url_helper_php.html"> url_helper.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_view_phtml.html"> view.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_view_add_phtml.html"> view_add.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_view_edit_phtml.html"> view_edit.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_view_index_phtml.html"> view_index.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_view_show_phtml.html"> view_show.phtml
</a><br>
</div><br />
<b>Classes:</b><br />
<div class="package">
<a href="../PHPonTrax/.html"></a><br />
<a href="../PHPonTrax/ActionController.html">ActionController</a><br />
<a href="../PHPonTrax/ActionControllerError.html">ActionControllerError</a><br />
<a href="../PHPonTrax/ActionMailer.html">ActionMailer</a><br />
<a href="../PHPonTrax/ActiveRecord.html">ActiveRecord</a><br />
<a href="../PHPonTrax/ActiveRecordError.html">ActiveRecordError</a><br />
<a href="../PHPonTrax/ActiveRecordHelper.html">ActiveRecordHelper</a><br />
<a href="../PHPonTrax/ApplicationController.html">ApplicationController</a><br />
<a href="../PHPonTrax/ApplicationMailer.html">ApplicationMailer</a><br />
<a href="../PHPonTrax/AssetTagHelper.html">AssetTagHelper</a><br />
<a href="../PHPonTrax/DateHelper.html">DateHelper</a><br />
<a href="../PHPonTrax/Dispatcher.html">Dispatcher</a><br />
<a href="../PHPonTrax/FormHelper.html">FormHelper</a><br />
<a href="../PHPonTrax/FormOptionsHelper.html">FormOptionsHelper</a><br />
<a href="../PHPonTrax/FormTagHelper.html">FormTagHelper</a><br />
<a href="../PHPonTrax/Helpers.html">Helpers</a><br />
<a href="../PHPonTrax/Inflector.html">Inflector</a><br />
<a href="../PHPonTrax/InputFilter.html">InputFilter</a><br />
<a href="../PHPonTrax/JavaScriptHelper.html">JavaScriptHelper</a><br />
<a href="../PHPonTrax/Router.html">Router</a><br />
<a href="../PHPonTrax/ScaffoldController.html">ScaffoldController</a><br />
<a href="../PHPonTrax/Session.html">Session</a><br />
<a href="../PHPonTrax/TraxError.html">TraxError</a><br />
<a href="../PHPonTrax/TraxGenerator.html">TraxGenerator</a><br />
<a href="../PHPonTrax/UrlHelper.html">UrlHelper</a><br />
</div>
</td>
<td>
<table cellpadding="10" cellspacing="0" width="100%" border="0"><tr><td valign="top">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="10%" align="left" valign="bottom"><a href=
"../PHPonTrax/tutorial_advbuild.pkg.html">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
<td width="10%" align="right" valign="bottom"><a href=
"../PHPonTrax/tutorial_troubleshoot.pkg.html">Next</a></td>
</tr>
</table>
<span><a name="troubleshoot.naming"></a><h2 class="title">The Trax Naming Convention</h2><p>Trax uses naming conventions instead of explicit configuration
to link the various parts of a Trax application. From the name of
a component, Trax can compute the names of related components.
This lets you build an application faster because you need to do
less.</p>
<p>Conversion of names between singular and plural or between
CamelCase and lower_case_underscore forms is done by methods of the
<a href="../PHPonTrax/Inflector.html">Inflector</a> class.</p>
<a name="naming.naming_model"></a><h3 class="title">Names In the Model</h3><p><strong>Database tables</strong> have names which are
English plural words in lowercase. Where the name is two or more
words, the words are connected by underscores ('_').
Examples:</p>
<ul><li><code>orders</code></li>
<li><code>people</code></li>
<li><code>approved_medications</code></li></ul>
<p>The primary key column of each table is called
<code>id</code>.</p>
<p>There is also a naming convention for foreign keys. A foreign
key which selects a row in a table by (only) the
<code>id</code> column is the singular lower_case_underscore
name of that table with suffix <code>_id</code>. For
example, a foreign key to the <code>people</code>
table's <code>id</code> column would be stored
in a column named <code>person_id</code>.</p>
<p>Column names containing the string <code>password</code>
are treated specially by <a href="../PHPonTrax/ActiveRecordHelper.html">ActiveRecordHelper</a>.</p>
<p><strong><a href="../PHPonTrax/ActiveRecord.html">ActiveRecord</a> subclasses</strong> have names
which are English singular words in CamelCase. Where the name is
two or more words, the first letter of each word is capitalized.
Each table in the database has a one-to-one relationship with a
subclass of ActiveRecord whose name is the CamelCase singular of
the table name. Examples corresponding to the table names listed
above:</p>
<ul><li><code>Order</code></li>
<li><code>Person</code></li>
<li><code>ApprovedMedication</code></li></ul>
<p>The subclass is contained in a file in the
<code>app/models</code> area of the Trax work area. The file
name is the lower_case_underscore form of the subclass name.
Examples corresponding to the subclasses listed above:</p>
<ul><li><code>order.php</code></li>
<li><code>person.php</code></li>
<li><code>approved_medication.php</code></li></ul><hr />
<a name="naming.naming_controller"></a><h3 class="title">Names In the Controller</h3><p>The Controller is implemented as
<strong><a href="../PHPonTrax/ApplicationController.html">ApplicationController</a> subclasses</strong> that
have descriptive names in CamelCase. The last
word of a controller name is <code>Controller</code>. The
word(s) of the controller name before <code>Controller</code>
describe the thing controlled. For example:</p>
<ul><li><code>StoreController</code></li>
<li><code>CreditAuthorizationController</code></li></ul>
<p>Each ApplicationController subclass is contained in a file
whose name is the lower_case_underscore form of the subclass name.
This file stored in the <code>app/controllers</code> area of
the Trax work area. For example, the files containing the
subclasses listed above are:</p>
<ul><li><code>store_controller.php</code></li>
<li><code>credit_authorization_controller.php</code></li></ul>
<p>Each ApplicationController subclass also has a helper file in
the <code>app/helpers</code> area of the Trax work area with
a file name which is the same as the name of the controller file with
<code>helper</code> substituted for
<code>controller</code>. For example, the helper files for
the controllers listed above are:</p>
<ul><li><code>store_helper.php</code></li>
<li><code>credit_authorization_helper.php</code></li></ul><hr />
<a name="naming.naming_view"></a><h3 class="title">Names In the View</h3><p>There is a view associated with each controller. The
templates for that view are stored in the
<code>app/views</code> area of the Trax work area in a
directory whose name is the desciptive part of the controller
name. For example, the view template files for the controllers
listed above are stored in:</p>
<ul><li><code>app/views/store/</code></li>
<li><code>app/views/credit_authorization/</code></li></ul>
<p>The layout for each view is stored in the
<code>app/views/layouts</code> area of the Trax work area in
a file whose name is the desciptive part of the controller
name with a <code>.phtml</code> extension. For example, the
layouts for the controllers listed above are stored in:</p>
<ul><li><code>app/views/layouts/store.phtml</code></li>
<li><code>app/views/layouts/credit_authorization.phtml</code></li></ul><hr />
<a name="naming.naming_forms"></a><h3 class="title">Fields On Forms</h3><p>Input fields on forms that relate directly to elements of the
model are named according to the ActiveRecord subclass and
attribute represented by the field. Simple elements are given
<code>id="</code><span class = "tute-comment">SubClassName_attribute_name</span><code>"</code> and
<code>name="</code><span class = "tute-comment">SubClassName</span><code>[</code><span class = "tute-comment">attribute_name</span><code>]"</code>.
For example, a field to input the first name of a person which is
attribute <code>fname</code> of subclass
<code>Person</code> would appear as:
<pre class="example"><input id="Person_fname name="Person[fname]" type="text" ... /></pre>
When the form is POSTed to the server, the value entered into this
field will be in <code>$_REQUEST['Person']['fname']</code></p>
<p>Certain attributes, such as dates and times, are composites of
individual fields representing year, month, day, hour, minute and
second. Each field is named with the attribute name followed by a
suffix describing which component is represented. The suffixes
for dates and times are:
<ul><li><code>(1i)</code> Year</li>
<li><code>(2i)</code> Month</li>
<li><code>(3i)</code> Day of the month</li>
<li><code>(4i)</code> Hour</li>
<li><code>(5i)</code> Minute</li>
<li><code>(6i)</code> Second</li></ul>
For example, a group of three pulldown menus which specified
attribute <code>birthdate</code> of subclass
<code>Person</code> would be named:
<pre class="example">Month:
<select name="Person[birthdate(2i)]"> ... </select>
Day:
<select name="Person[birthdate(3i)]"> ... </select>
Year:
<select name="Person[birthdate(1i)]"> ... </select></pre>
When the form is POSTed to the server, the selected values will
appear in <code>$_REQUEST['Person']['birthdate(2i)']</code>,
<code>$_REQUEST['Person']['birthdate(3i)']</code> and
<code>$_REQUEST['Person']['birthdate(1i)']</code>
respectively. The value would be stored in the database in a
column of type <code>date</code> and would be
represented according to the SQL standard as
<code>YYYY-MM-DD</code> .</p><hr /></span>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="33%" align="left" valign="top"><a href="../PHPonTrax/tutorial_advbuild.pkg.html">Prev</a></td>
<td width="34%" align="center" valign="top"><a href=
"../PHPonTrax/tutorial_PHPonTrax.pkg.html">Up</a></td>
<td width="33%" align="right" valign="top"><a href=
"../PHPonTrax/tutorial_troubleshoot.pkg.html">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Advanced Application Build Topics</td>
<td width="34%" align="center" valign="top">PHP On Trax</td>
<td width="33%" align="right" valign="top">Troubleshooting</td>
</tr>
</table>
<div class="credit">
<hr />
Documentation generated on Thu, 04 May 2006 19:46:54 -0600 by <a href="http://www.phpdoc.org">phpDocumentor 1.3.0RC4</a>
</div>
</td></tr></table>
</td>
</tr>
</table>
</body>
</html>