[UPHPU] UPHPU Meeting: Today - Thursday June 19th @ 7pm : PHP +
Qcodo
Victor Villa
vvilla at gmail.com
Thu Jun 19 06:52:40 MDT 2008
Greets all,
June's UPHPU meeting will be Thursday, June 19th at 7p in Draper (address /
map below).
We are very pleased to have Travis Barney of Progrexion presenting on QCodo.
The Qcodo Development Framework is an open-source PHP 5 framework that
focuses on freeing developers from unnecessary tedious, mundane coding. It
is a completely object-oriented framework that takes the best of PHP and
provides a truly rapid application development platform. (http://qcodo.com/
)
Meeting Information:
UPHPU
June 19th, 2008 @7pm
12393 Gateway Park Place, Suite 600
Draper, Utah 84020
http://maps.google.com/maps?f=q&hl=en&geocode=&q=12393+Gateway+Park+Pl,+Drap
er,+UT+84020&sll=37.0625,-95.677068&sspn=61.711173,104.0625&ie=UTF8&z=17&iwl
oc=addr
Presentation Notes:
Part 1. Preparation and Configuration
A. Download QCodo / Setup
Latest Dev Version - http://qcodo.com/downloads/
Unzip, Configure Apache, etc. - WAMP is nice, google
has info.
B. Configuration Settings
Path Constants - Directory structure constants.
Database Connection(s) - One or several database
connection settings.
C. DevTools Directory
codegen_settings.xml - Name the Application, define
database(s).
path_to_prepend.txt - Absolute path to reach the
configuration, etc.
Qcodo Updater - php qcodo_updater.phpexe development
Part 2. Generate the Database Model
A. Supported Database Types
InnoDB - Having true foreign keys is ideal for the
code generator.
MyISAM - Additional txt file can describe table
field relationships.
Postgres - True foreign keys available.
SqlServer - True foreign keys available.
B. Foriegn Keys, Field Names
If MyISAM - table_name.field_name =>
table2_name.field_name text file for all relationships.
*_type table(s) - Two column (id, name) table which
generates Type contstant classes.
*_assn table(s) - Two column (parent_id, child_id)
table for zero to many relationship between two objects.
C. Naming Conventions
Singular table names - Preferably the object names
in the db should be lowercase singular with underscores.
Underscore between words - The code-generator writes
the Getter/Setters, etc. as CamelCased.
Descriptive Associations - Produce readable
understandable code.
D. Run CodeGenerator
Command Line - php codegen.phpexe
codegen_settings.xml
Via Browser - /_devtools/codegen.php
Part 3. Modify Forms and Controls
A. Hello World Page
hello-world.php - Demonstrate Form_Create and
Form::Run process.
hello-world.tpl - Create the "View" layer markup and
remarks.
B. Drafts and MetaControls
Form Drafts - Working PHP Form class and template
examples to copy/paste from.
Panel Drafts - Copied into the /lib directory to be
edited for custom layout/logic.
Data Meta Control - A factory class for
instantiating data-bound controls, reducing keypresses.
C. Login Authentication
LoginPanel.class.php - Example reusable panel for
validating user sessions.
Part 4. Customize Views
A. PHP Template Files
header.inc.php - Page Title, load Assets, etc.
footer.inc.php - Copyright, etc.
_p Function - Shorthand for echo, and escapes HTML
special chars by default.
Render or RenderWithName - Surround the control with
Error Reporting, Instructions, and Label.
B. Modify Panel Classes
AutoRenderChildren - Render child controls without a
template.
Control Properties - Name, Text, Instructions,
CssClass, Warning, Enabled.
Control Methods - Focus, Blink, AddChildControl,
Validate.
C. Event Bound Controls
QServerAction - AddAction(new QClickEvent(), new
QServerAction('MethodName'));
QServerControlAction - AddAction(new QClickEvent(),
new QServerAction($objControl, 'MethodName'));
QAjaxAction - AddAction(new QChangeEvent(), new
QAjaxAction('MethodName'));
QAjaxControlAction - AddAction(new QFocusEvent(),
new QAjaxControlAction($objControl, 'MethodName'));
QJavaScriptAction - AddAction(new QEnterKeyEvent(),
new QJavaScriptAction("alert('enter!');"));
Part 4. Testing and Error Reporting
A. Database Profiling
DB_CONNECTION - 'profiling' => true
Enable -
QApplication::$Database[1]->EnableProfiling();
Output -
QApplication::$Database[1]->OutputProfiling();
A. Stack Trace and Verbosity.
ERROR_PAGE_PATH - Well formatted browser based error
details.
ERROR_LOG_PATH - Text document output of errors.
ERROR_FRIENDLY_PAGE_PATH - For public websites, when
you dont want errors shown.
ERROR_FRIENDLY_AJAX_MESSAGE - When errors occur
during ajax calls, hide details on public sites.
Part 5. Beyond The Basics
A. Advanced QQuery
$objDb = ObjectName::GetDatabase() - In case a
project data model consists of multiple databases.
$objRes = $objDb->Query($strQuery); - When you want
a result set.
$objDb->NonQuery($strQuery); - When you are running
commands, not requring a result set.
B. QEmailServer
Write to Text - For development machines not
connected to a mail server.
Attachments and Multi-Part - Rich HTML and
plain-text content segments, file attachments.
C. Customizing the CodeGenerator
Template .tpl Files - Text documents with
configurable Open and Close tags, to output/update various PHP documents.
More information about the UPHPU
mailing list