diff options
-rw-r--r--[-rwxr-xr-x] | demos/blog-tutorial/protected/pages/Day2/CreateAR.page | 303 | ||||
-rw-r--r-- | demos/blog-tutorial/protected/pages/Day2/blog_wsat_generate_ar.png | bin | 0 -> 69184 bytes | |||
-rw-r--r-- | demos/blog-tutorial/protected/pages/Day2/wsat_login.png | bin | 0 -> 47951 bytes | |||
-rw-r--r--[-rwxr-xr-x] | demos/quickstart/protected/pages/GettingStarted/CommandLine.page | 242 |
4 files changed, 262 insertions, 283 deletions
diff --git a/demos/blog-tutorial/protected/pages/Day2/CreateAR.page b/demos/blog-tutorial/protected/pages/Day2/CreateAR.page index 1d7838a2..99e91d5a 100755..100644 --- a/demos/blog-tutorial/protected/pages/Day2/CreateAR.page +++ b/demos/blog-tutorial/protected/pages/Day2/CreateAR.page @@ -1,178 +1,127 @@ -<com:TContent ID="Main">
-
-<h1>Creating Active Record Classes</h1>
-
-<p>
-We need to create two <a href="http://www.pradosoft.com/demos/quickstart/?page=Database.ActiveRecord">Active Record</a> classes, <tt>UserRecord</tt> and <tt>PostRecord</tt>, to represent data records in the <tt>users</tt> and <tt>posts</tt> tables, respectively. Active Record classes must extend from the base class <tt>ActiveRecord</tt>, and must define property names that matches with the field names of the corresponding table.
-</p>
-
-<p>
-To better organize our directories, we create a new directory <tt>protected/database</tt> to hold the class files. We also modify our application configuration by inserting the following lines. It is equivalent to adding the directory <tt>protected/database</tt> to PHP include_path, which allows us to use the classes without explicitly including them.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-<paths>
- <using namespace="Application.database.*" />
-</paths>
-</com:TTextHighlighter>
-
-<p>
-Instead of writing the classes manually, we will use the <a href="http://www.pradosoft.com/demos/quickstart/?page=GettingStarted.CommandLine">PRADO command line tool</a> again to generate the classes for us.
-</p>
-
-<p>
-Under the <tt>blog</tt> directory, run the following command to enter into the interactive mode of the command line tool:
-</p>
-
-<com:TTextHighlighter CssClass="source cli" Language="text">
-php path/to/prado-cli.php shell .
-</com:TTextHighlighter>
-
-<p>
-We should see
-</p>
-
-<com:TTextHighlighter CssClass="source cli" Language="text">
-Command line tools for Prado 3.1.0.
-** Loaded PRADO appplication in directory "protected".
-PHP-Shell - Version 0.3.1
-(c) 2006, Jan Kneschke <jan@kneschke.de>
-
->> use '?' to open the inline help
-
->>
-</com:TTextHighlighter>
-
-<p>
-At the prompt, enter the following two commands to create <tt>UserRecord</tt> and <tt>PostRecord</tt> classes:
-</p>
-
-<com:TTextHighlighter CssClass="source cli" Language="text">
->> generate users Application.database.UserRecord
-
->> generate posts Application.database.PostRecord
-</com:TTextHighlighter>
-
-<p>
-Here we used the <a href="http://www.pradosoft.com/demos/quickstart/?page=Fundamentals.Components">namespace format</a> again to specify the classes to be created. The path <tt>Application.database.UserRecord</tt> indicates that we want the <tt>UserRecord</tt> class file to be <tt>protected/database/UserRecord.php</tt>.
-</p>
-
-<p>
-We should see the following directory structure with two new files under <tt>protected/database</tt>:
-</p>
-
-<img src="<%~ directories2.gif %>" class="output" />
-
-<p>
-If we check the <tt>PostRecord</tt> class file, we should see the following content.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="php">
-class PostRecord extends TActiveRecord
-{
- const TABLE='posts';
- public $post_id;
- public $author_id;
- public $create_time;
- public $title;
- public $content;
- public $status;
-
- public static function finder($className=__CLASS__)
- {
- return parent::finder($className);
- }
-}
-</com:TTextHighlighter>
-
-<p>
-As we see, for each field in the <tt>posts</tt> table, the class has a corresponding data member. The constant <tt>TABLE</tt> specifies the table name for the <tt>PostRecord</tt>. The static method <tt>finder()</tt> allows us to perform query and retrieve post data in terms of <tt>PostRecord</tt> objects.
-</p>
-
-<p>
-We can use the command line tool to do some testing with our newly created Active Record classes. Still in the interactive mode of the command line tool, we enter a PHP statement and should see the following. Interested readers may try some other PHP statements, such as <tt>UserRecord::finder()->findAll()</tt>.
-</p>
-
-<com:TTextHighlighter CssClass="source cli" Language="text">
->> PostRecord::finder()->findAll()
-array
-(
- [0] => PostRecord#1
- (
- [post_id] => '1'
- [author_id] => 'admin'
- [create_time] => '1175708482'
- [title] => 'first post'
- [content] => 'this is my first post'
- [status] => '0'
- [TActiveRecord:_readOnly] => false
- [TActiveRecord:_connection] => null
- [TComponent:_e] => array()
- )
-)
-</com:TTextHighlighter>
-
-<h1>Relationship Between Posts and Users</h1>
-<p>
-Recall that there was a foreign key relationship between the <tt>users</tt> and <tt>posts</tt> table. The entity-relationship diagram is shown below for convienence.
-</p>
-
-<img src="<%~ ER.gif %>" class="output" />
-
-<p>
-From the entity-relationship diagram above, we see that the <tt>posts</tt> table contains a field named <tt>author_id</tt>. This <tt>author_id</tt> field is a foreign key to the reference table <tt>users</tt>. In particular, the values in the <tt>author_id</tt> field should be of that from the <tt>users</tt> table's <tt>username</tt> field. One of the consequence of this relationship, thinking in terms of objects, is that each "post" belongs to an "author" and one "author" may have many "posts".
-</p>
-
-<p>
-We can model the relationship between <tt>posts</tt> and <tt>users</tt> table in Active Record by modifying the <tt>PostRecord</tt> and <tt>UserRecord</tt> classes as follows.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="php">
-class PostRecord extends TActiveRecord
-{
- //... properties and methods as before
-
- public $author; //holds an UserRecord
-
- public static $RELATIONS=array
- (
- 'author' => array(self::BELONGS_TO, 'UserRecord'),
- );
-}
-</com:TTextHighlighter>
-
-<p>
-The static <tt>$RELATIONS</tt> property of <tt>PostRecord</tt> defines that the property <tt>$author</tt> belongs to an <tt>UserRecord</tt>. In <tt>array(self::BELONGS_TO, 'UserRecord')</tt>, the first element defines the relationship type, in this case <tt>self::BELONGS_TO</tt>. The second element is the name of related record, in this case an <tt>UserRecord</tt>. The <tt>UserRecord</tt> is defined similarly below, the difference is that, the user record has many <tt>PostRecord</tt>s.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="php">
-class UserRecord extends TActiveRecord
-{
- //... properties and methods as before
-
- public $posts=array(); //holds an array of PostRecord
-
- public static $RELATIONS=array
- (
- 'posts' => array(self::HAS_MANY, 'PostRecord'),
- );
-}
-</com:TTextHighlighter>
-
-<p>
-An array of <tt>UserRecord</tt> with and its corresponding posts may be fetched as follows.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="php">
-$users = UserRecord::finder()->withPosts()->findAll();
-</com:TTextHighlighter>
-
-<com:TipBox>
-The method <tt>withXXX()</tt> (where XXX is the relationship property name, in this case, <tt>Posts</tt>) fetches the corresponding <tt>PostRecords</tt> using a second query (not by using a join). The <tt>withXXX()</tt> method accepts the same arguments as other finder methods of TActiveRecord, e.g. <tt>withPosts('status = ?', 0)</tt>.
-</com:TipBox>
-
-<p>
-Further detailed documentation can be found in the quickstart <a href="http://www.pradosoft.com/demos/quickstart/?page=Database.ActiveRecord">Active Record</a> docs.
-</p>
-
+<com:TContent ID="Main"> + +<h1>Creating Active Record Classes</h1> + +<p> +We need to create two <a href="http://www.pradosoft.com/demos/quickstart/?page=Database.ActiveRecord">Active Record</a> classes, <tt>UserRecord</tt> and <tt>PostRecord</tt>, to represent data records in the <tt>users</tt> and <tt>posts</tt> tables, respectively. Active Record classes must extend from the base class <tt>ActiveRecord</tt>, and must define property names that matches with the field names of the corresponding table. +</p> + +<p> +To better organize our directories, we create a new directory <tt>protected/database</tt> to hold the class files. We also modify our application configuration by inserting the following lines. It is equivalent to adding the directory <tt>protected/database</tt> to PHP include_path, which allows us to use the classes without explicitly including them. +</p> + +<com:TTextHighlighter CssClass="source" Language="xml"> +<paths> + <using namespace="Application.database.*" /> +</paths> +</com:TTextHighlighter> + +<p> +Instead of writing the classes manually, we will use the <a href="?page=GettingStarted.Wsat">PRADO Web Site Administration Tool</a> to generate the classes for us. +So we need to modify again our application configuration in the services section like follows: +</p> + + <p class="block-content"> +<com:TTextHighlighter CssClass="source" Language="xml"> +<services> + ... + <service id="wsat" class="System.Wsat.TWsatService" Password="my_secret_password" /> +</services> +</com:TTextHighlighter> +</p> + +<p class="block-content"> + Then you are ready to go to: http://localhost/yoursite/index.php?wsat=TWsatLogin where you should see + the following page: +</p> +<img src="<%~wsat_login.png%>" style="width: 700px;" /> +<p class="block-content"> + In the text field you need to type the password previosly specified in the service inclusion. This + is part of a basic security system to avoid undesirable persons to use this tool. +</p> + + <p class="block-content"> + In order to generate AR classes you need to go to: http://localhost/divermania/index.php?wsat=TWsatGenerateAR + by clicking the proper links in the welcome page. Then you should see the following page: +</p> +<img src="<%~blog_wsat_generate_ar.png%>" style="width: 700px;" /> + +<p> + In the <tt>Output Folder</tt> field we used the <a href="http://www.pradosoft.com/demos/quickstart/?page=Fundamentals.Components">namespace format</a> again, the path <tt>Application.database</tt> indicates that we want to put our class's files in the <tt>protected/database/</tt> folder. + The <tt>*</tt> in the <tt>Table Name</tt> field means that we want to generate all AR classes, you can specify a table name instead if you want to generate just a specific AR class. +</p> + +<p> +Afterward we should see the following directory structure with two new files under <tt>protected/database</tt>: +</p> + +<img src="<%~ directories2.gif %>" class="output" /> + +<p> +If we check the <tt>PostRecord</tt> class file, we should see something similar to the following content: +</p> + +<com:TTextHighlighter CssClass="source" Language="php"> +class PostRecord extends TActiveRecord +{ + const TABLE='posts'; + + public $post_id; + public $author_id; + public $create_time; + public $title; + public $content; + public $status; + + public static function finder($className=__CLASS__) + { + return parent::finder($className); + } + + public static $RELATIONS = array ( + 'author' => array(self::BELONGS_TO, 'UserRecord', 'author_id') + ); + + public function __toString() + { + return $this->title; + } +} +</com:TTextHighlighter> + +<p> +As we see, for each field in the <tt>posts</tt> table, the class has a corresponding data member. The constant <tt>TABLE</tt> specifies the table name for the <tt>PostRecord</tt>. The static method <tt>finder()</tt> allows us to perform query and retrieve post data in terms of <tt>PostRecord</tt> objects. +</p> + +<h1>Relationship Between Posts and Users</h1> +<p> +Recall that there was a foreign key relationship between the <tt>users</tt> and <tt>posts</tt> table. The entity-relationship diagram is shown below for convienence. +</p> + +<img src="<%~ ER.gif %>" class="output" /> + +<p> +From the entity-relationship diagram above, we see that the <tt>posts</tt> table contains a field named <tt>author_id</tt>. This <tt>author_id</tt> field is a foreign key to the reference table <tt>users</tt>. In particular, the values in the <tt>author_id</tt> field should be of that from the <tt>users</tt> table's <tt>username</tt> field. One of the consequence of this relationship, thinking in terms of objects, is that each "post" belongs to an "author" and one "author" may have many "posts". +</p> + +<p> +The static <tt>$RELATIONS</tt> property of <tt>PostRecord</tt> defines that the property <tt>$author</tt> belongs to an <tt>UserRecord</tt>. In <tt>array(self::BELONGS_TO, 'UserRecord')</tt>, the first element defines the relationship type, in this case <tt>self::BELONGS_TO</tt>. The second element is the name of related record, in this case an <tt>UserRecord</tt>. +</p> + +<p> +An array of <tt>UserRecord</tt> with and its corresponding posts may be fetched as follows. +</p> + +<com:TTextHighlighter CssClass="source" Language="php"> +$users = UserRecord::finder()->withPosts()->findAll(); +</com:TTextHighlighter> + +<com:TipBox> +The method <tt>withXXX()</tt> (where XXX is the relationship property name, in this case, <tt>Posts</tt>) fetches the corresponding <tt>PostRecords</tt> using a second query (not by using a join). The <tt>withXXX()</tt> method accepts the same arguments as other finder methods of TActiveRecord, e.g. <tt>withPosts('status = ?', 0)</tt>. +</com:TipBox> + +<p> +Further detailed documentation can be found in the quickstart <a href="http://www.pradosoft.com/demos/quickstart/?page=Database.ActiveRecord">Active Record</a> docs. +</p> + </com:TContent>
\ No newline at end of file diff --git a/demos/blog-tutorial/protected/pages/Day2/blog_wsat_generate_ar.png b/demos/blog-tutorial/protected/pages/Day2/blog_wsat_generate_ar.png Binary files differnew file mode 100644 index 00000000..433c1230 --- /dev/null +++ b/demos/blog-tutorial/protected/pages/Day2/blog_wsat_generate_ar.png diff --git a/demos/blog-tutorial/protected/pages/Day2/wsat_login.png b/demos/blog-tutorial/protected/pages/Day2/wsat_login.png Binary files differnew file mode 100644 index 00000000..dbe1ad8b --- /dev/null +++ b/demos/blog-tutorial/protected/pages/Day2/wsat_login.png diff --git a/demos/quickstart/protected/pages/GettingStarted/CommandLine.page b/demos/quickstart/protected/pages/GettingStarted/CommandLine.page index 5f5dacb9..31509338 100755..100644 --- a/demos/quickstart/protected/pages/GettingStarted/CommandLine.page +++ b/demos/quickstart/protected/pages/GettingStarted/CommandLine.page @@ -1,106 +1,136 @@ -<com:TContent ID="body" >
-<h1 id="501">Command Line Tool</h1>
-<p id="70046" class="block-content">The optional <tt>prado-cli.php</tt> PHP script file in the <tt>framework</tt>
-directory provides command line tools to perform various tedious takes in Prado.
-The <tt>prado-cli.php</tt> can be used to create Prado project skeletons, create
-initial test fixtures, and access to an interactive PHP shell.
-</p>
-<h2 id="502">Requirements</h2>
-<p id="70047" class="block-content">
-To use the command line tool, you need to use your command prompt, command console
-or terminal. In addition, PHP must be able to execute PHP scripts from
-the command line.
-</p>
-
-<h2 id="503">Usage</h2>
-<p id="70048" class="block-content">
-If you type <tt>php path/to/framework/prado-cli.php</tt>, you should see
-the following information. Alternatively, if you are not on Windows,
-you may try to change the <tt>prado-cli.php</tt> into an executable
-and execute it as a script</p>
-<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70006">
-Command line tools for Prado 3.0.5.
-usage: php prado-cli.php action <parameter> [optional]
-example: php prado-cli.php -c mysite
-
-actions:
- -c <directory>
- Creates a Prado project skeleton for the given <directory>.
-
- -t <directory>
- Create test fixtures in the given <directory>.
-
- shell [directory]
- Runs a PHP interactive interpreter. Initializes the Prado
- application in the given [directory].
-</com:TTextHighlighter>
-
-<p id="70049" class="block-content">The <b><parameter></b> are required parameters and <b>[optional]</b>
-are optional parameters. </p>
-
-<h2 id="504">Creating a new Prado project skeleton</h2>
-
-<p id="70050" class="block-content">To create a Prado project skeleton, do the following:</p>
-<ol>
- <li>Change to the directory where you want to create the project skeleton.</li>
- <li>Type, <tt>php ../prado/framework/prado-cli.php -c helloworld</tt>, where
- <tt>helloworld</tt> is the directory name that you want to create the project skeleton files.</li>
- <li>Type, <tt>php ../prado/framework/prado-cli.php <b>-t</b> helloworld</tt> to create
- the test fixtures for the <tt>helloworld</tt> project.</li>
-</ol>
-
-<h2 id="505">Interactive Shell</h2>
-<p id="70051" class="block-content">
-The interactive shell allows you to evaluate PHP statements from the command line.
-The <tt>prado-cli.php</tt> script can be used to start the shell and load an existing
-Prado project. For example, let us load the blog demo project. Assume that your
-command line is in the <tt>prado</tt> distribution directory and you type.
-</p>
-<p id="70052" class="block-content">
-<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70007">
-$: php framework/prado-cli.php shell demos/blog
-</com:TTextHighlighter>
-The output should be
-<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70008">
-Command line tools for Prado 3.0.5.
-** Loaded Prado application in directory "demos\blog\protected".
-PHP-Shell - Version 0.3.1
-(c) 2006, Jan Kneschke <jan@kneschke.de>
-
->> use '?' to open the inline help
-
->>
-</com:TTextHighlighter>
-Then we will get an instance of the Prado blog application, and from
-that instance we want an instance of the <tt>'data'</tt> module. Notice that
-a <b>semicolon</b> at the end of the line <b>suppresses the output</b>.
-
-<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70009">
->> $app = Prado::getApplication();
-
->> $db = $app->getModule('data');
-</com:TTextHighlighter>
-Lastly, we want to use the data module to query for a post with <tt>ID=1</tt>. Notice that
-we <b>leave out the semicolon</b> to show the results.
-<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70010">
->> $db->queryPostByID(1)
-</com:TTextHighlighter>
-There should not be any errors and you should see the following.
-<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70011">
-PostRecord#1
-(
- [ID] => 1
- [AuthorID] => 1
- [AuthorName] => 'Prado User'
- [CreateTime] => 1148819691
- [ModifyTime] => 0
- [Title] => 'Welcome to Prado Weblog'
- [Content] => 'Congratulations! You have successfully installed Prado Blog --
- a PRADO-driven weblog system. A default administrator account has been created.
- Please login with <b>admin/prado</b> and update your password as soon as possible.'
- [Status] => 0
- [CommentCount] => 0
-)
-</com:TTextHighlighter>
-</p>
-</com:TContent>
+<com:TContent ID="body" > +<h1 id="501">Command Line Tool</h1> +<p id="70046" class="block-content">The optional <tt>prado-cli.php</tt> PHP script file in the <tt>framework</tt> +directory provides command line tools to perform various tedious takes in Prado. +The <tt>prado-cli.php</tt> can be used to create Prado project skeletons, create +initial test fixtures, and access to an interactive PHP shell. +</p> +<h2 id="502">Requirements</h2> +<p id="70047" class="block-content"> +To use the command line tool, you need to use your command prompt, command console +or terminal. In addition, PHP must be able to execute PHP scripts from +the command line. +</p> + +<h2 id="503">Usage</h2> +<p id="70048" class="block-content"> +If you type <tt>php path/to/framework/prado-cli.php</tt>, you should see +the following information. Alternatively, if you are not on Windows, +you may try to change the <tt>prado-cli.php</tt> into an executable +and execute it as a script</p> +<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70006"> +Command line tools for Prado 3.0.5. +usage: php prado-cli.php action <parameter> [optional] +example: php prado-cli.php -c mysite + +actions: + -c <directory> + Creates a Prado project skeleton for the given <directory>. + + -t <directory> + Create test fixtures in the given <directory>. + + shell [directory] + Runs a PHP interactive interpreter. Initializes the Prado + application in the given [directory]. +</com:TTextHighlighter> + +<p id="70049" class="block-content">The <b><parameter></b> are required parameters and <b>[optional]</b> +are optional parameters. </p> + +<h2 id="504">Creating a new Prado project skeleton</h2> + +<p id="70050" class="block-content">To create a Prado project skeleton, do the following:</p> +<ol> + <li>Change to the directory where you want to create the project skeleton.</li> + <li>Type, <tt>php ../prado/framework/prado-cli.php -c helloworld</tt>, where + <tt>helloworld</tt> is the directory name that you want to create the project skeleton files.</li> + <li>Type, <tt>php ../prado/framework/prado-cli.php <b>-t</b> helloworld</tt> to create + the test fixtures for the <tt>helloworld</tt> project.</li> +</ol> + +<h2 id="505">Interactive Shell</h2> +<p id="70051" class="block-content"> +The interactive shell allows you to evaluate PHP statements from the command line. +The <tt>prado-cli.php</tt> script can be used to start the shell and load an existing +Prado project. For example, let us load the blog demo project. Assume that your +command line is in the <tt>prado</tt> distribution directory and you type. +</p> +<p id="70052" class="block-content"> +<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70007"> +$: php framework/prado-cli.php shell demos/blog +</com:TTextHighlighter> +The output should be +<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70008"> +Command line tools for Prado 3.0.5. +** Loaded Prado application in directory "demos\blog\protected". +PHP-Shell - Version 0.3.1 +(c) 2006, Jan Kneschke <jan@kneschke.de> + +>> use '?' to open the inline help + +>> +</com:TTextHighlighter> +Then we will get an instance of the Prado blog application, and from +that instance we want an instance of the <tt>'data'</tt> module. Notice that +a <b>semicolon</b> at the end of the line <b>suppresses the output</b>. + +<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70009"> +>> $app = Prado::getApplication(); + +>> $db = $app->getModule('data'); +</com:TTextHighlighter> +Lastly, we want to use the data module to query for a post with <tt>ID=1</tt>. Notice that +we <b>leave out the semicolon</b> to show the results. +<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70010"> +>> $db->queryPostByID(1) +</com:TTextHighlighter> +There should not be any errors and you should see the following. +<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70011"> +PostRecord#1 +( + [ID] => 1 + [AuthorID] => 1 + [AuthorName] => 'Prado User' + [CreateTime] => 1148819691 + [ModifyTime] => 0 + [Title] => 'Welcome to Prado Weblog' + [Content] => 'Congratulations! You have successfully installed Prado Blog -- + a PRADO-driven weblog system. A default administrator account has been created. + Please login with <b>admin/prado</b> and update your password as soon as possible.' + [Status] => 0 + [CommentCount] => 0 +) +</com:TTextHighlighter> +</p> + +<h2>Creating Active Record Classes</h2> +<p> +In the blog demo project, we need to create two <a href="?page=Database.ActiveRecord">Active Record</a> classes, <tt>UserRecord</tt> and <tt>PostRecord</tt>, to represent data records in the <tt>users</tt> and <tt>posts</tt> tables, respectively. Active Record classes must extend from the base class <tt>ActiveRecord</tt>, and must define property names that matches with the field names of the corresponding table. +</p> + +<p> +To better organize our directories, we create a new directory <tt>protected/database</tt> to hold the class files. We also modify our application configuration by inserting the following lines. It is equivalent to adding the directory <tt>protected/database</tt> to PHP include_path, which allows us to use the classes without explicitly including them. +</p> + +<com:TTextHighlighter CssClass="source" Language="xml"> +<paths> + <using namespace="Application.database.*" /> +</paths> +</com:TTextHighlighter> + +<p> +At the prompt, enter the following two commands to create <tt>UserRecord</tt> and <tt>PostRecord</tt> classes: +</p> + +<com:TTextHighlighter CssClass="source cli" Language="text"> +>> generate users Application.database.UserRecord + +>> generate posts Application.database.PostRecord +</com:TTextHighlighter> + +<p> +Here we used the <a href="?page=Fundamentals.Components">namespace format</a> again to specify the classes to be created. The path <tt>Application.database.UserRecord</tt> indicates that we want the <tt>UserRecord</tt> class file to be <tt>protected/database/UserRecord.php</tt>. +</p> + +</com:TContent> |