这与面向对象的PHP有什么关系,还是可以通过将HTML放入类中来进一步改进?我该怎么做呢?注意:以下代码使用PEAR的QuickForm。提前谢谢。
<?php
//MySQL class
require_once('database/class.mysql.php');
//Session class
require_once('session/class.session.php');
//SignUp class
require_once('access/class.signup.php');
//QuickForm class
require_once('HTML/QuickForm.php');
//PHPMailer class
require_once('thirdparty/phpmailer/class.phpmailer.php');
//Instantiate the MySQL class
require_once('database/dbconnect.php');
$db = &new MySQL($host, $dbUser, $dbPass, $dbName);
//Instantiate the Session class
$session = new Session;
?>
<html>
<head>
<title>Test page</title>
</head>
<body>
<?php
//Instantiate Quickform
$form = new HTML_QuickForm('regForm', 'POST');
///Header
$form->addElement('header', null, 'Quickform tutorial example!');
//First name
$form->addElement('text', 'fname', 'First name:', array('size' => 30));
$form->addRule('fname', 'Please enter your first name', 'required', null, 'client');
//Last name
$form->addElement('text', 'lname', 'Last name', array('size' => 30));
$form->addRule('lname', 'Please enter your last name', 'required', null, 'client');
//Password
$form->addElement('password', 'pass', 'Password: ', array('size' => 30));
//Gender
$form->addElement('radio', 'sex', 'Gender: ', 'Male', 'male');
$form->addElement('radio', 'sex', '', 'Female', 'female');
//County
$form->addElement('select', 'county', 'County:', array(
'0' => 'Select',
'1' => 'Louth',
'2' => 'Meath'
));
//Date of Birth
$form->addElement('date', 'dob', 'Date of Birth:', array('format' => 'dMY', 'minYear' => 1950, 'maxYear' => date('Y')));
//Submit
$form->addElement('submit', null, 'Submit');
//Try to validate the form
if ($form->validate()) {
echo 'Hello';
}
//Output the form
$form->display();
?>
</body>
</html>
答案 0 :(得分:2)
您可能希望使用像Smarty这样的PHP模板系统。这将允许您完全将HTML与PHP代码分开。它还增加了允许您为所有页面创建标准页眉,页脚,菜单等的好处。
特别是Smarty模板系统似乎是用良好的OOP原则编写的。您创建了一个Smarty
对象,调用assign()
方法以安全方式注入信息,然后使用display()
方法生成HTML。
答案 1 :(得分:2)
就个人而言,我不建议为您的页面构建使用任何类型的HTML元素生成类,特别是如果它还包括动态生成的javascript。
你可能会说“Dude:如果它最终都以HTML结尾会有什么不同?”
如果你这样做,那么考虑到标准改变的频率,你将在明年留下一个古老的代码项目。当然,像a
这样的元素不太可能很快被折旧,但它的基础和样式属性可能会是。您还需要以编程方式考虑新的特殊情况元素,例如canvas
。您尝试验证HTML并发现br
和其他一些标记突然不接受结束斜杠,更不用说结束标记了。当你在元素生成类中处理CSS时,你可能会意识到你一直都在浪费。
当然编程PHP 大多数当时只是混合HTML和脚本编写,但是对于一些随机的,没有经验的Web管理员来说,在您更新HTML以符合当前标准之后总是更容易而不是盲目地挖掘你的PHP源代码。任何时候在您的堆栈或Web标准中的任何地方都有更新,您个人必须在整个项目中升级和更新所有,以确保a)您的HTML生成器类仍然可以运行; b)它可以处理每个已知的HTML元素和Javascript函数,以支持每个已知的浏览器。通常,您不必担心同时更新PHP和HTML / Javascript。
因此,使用PHP来处理后端数据库,远程提取,用户身份验证,表单验证,文件管理和数学计算,但在专门处理HTML结构时要小心。
只是恕我直言。虽然模板很好,但这基本上就是PHP网站的设计。
答案 2 :(得分:1)