Location: PHPKode > projects > PHP on Trax > johnpipi-trax-f599562/trax/doc/PHPonTrax/tutorial_naming.pkg.html
<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=&quot;</code><span class = "tute-comment">SubClassName_attribute_name</span><code>&quot;</code> and
<code>name=&quot;</code><span class = "tute-comment">SubClassName</span><code>[</code><span class = "tute-comment">attribute_name</span><code>]&quot;</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">&lt;input id=&quot;Person_fname name=&quot;Person[fname]&quot; type=&quot;text&quot; ... /&gt;</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:
&lt;select name=&quot;Person[birthdate(2i)]&quot;&gt; ... &lt;/select&gt;

Day:
&lt;select name=&quot;Person[birthdate(3i)]&quot;&gt; ... &lt;/select&gt;

Year:
&lt;select name=&quot;Person[birthdate(1i)]&quot;&gt; ... &lt;/select&gt;</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>
Return current item: PHP on Trax