欢迎任何建议! 我对php类的理解非常有限,但下面是我想要采用的路线的起点。代码反映了我在脑海中看到的内容以及我希望如何开展业务。我的代码看起来还不错,还是我离开了?
你有什么想法,你将如何实现如form-> validate-> insertquery-> sendmail->返回消息和错误这样的任务?
请尽量让你的答案变得简单,以便我能够理解它的理解,而不仅仅是复制/粘贴工作。
最诚挚的问候, 菲尔。
注意:这只是一个基础结构,没有添加完整的代码。
<?php
//=======================================
//class.logging.php
//========================================
class logging
{
public $data = array();
public $errors = array();
function __construct()
{
array_pop($_POST);
$this->data =($this->_logging)? is_isset(filterStr($_POST) : '';
foreach($this->data as $key=> $value)
{
$this->data[$key] = $value;
}
//print_r($this->data); de-bugging
}
public function is_isset($str)
{
if(isset($str)) ? true: false;
}
public function filterStr($str)
{
return preg_match(do somthing, $str);
}
public function validate_post()
{
try
{
if(!is_numeric($data['cardID'])) ? throw new Exception('CardID must be numeric!') : continue;
}
catch (Exception $e)
{
return $errors = $e->getCode();
}
}
public function showErrors()
{
foreach($errors as $error => $err)
{
print('<div class="notok"></div><br />');
}
}
public function insertQ()
{
$query = "";
}
}
//=======================================
//Usercp.php
//========================================
if(isset($_GET['mode']))
{
$mode = $_GET['mode'];
}
else
{
$mode = 'usercp';
}
switch($mode)
{
case 'usercp':
echo 'Welcome to the User Control Panel';
break;
case 'logging':
require_once 'class.logging.php';
$logger = new logging();
if(isset($_POST['submit'])
{
if($logger->validate_post === true)
{
$logger->insertQ();
require_once '/scripts/PHPMailer/class.phpmailer.php';
$mailer = new PHPMailer();
$mailer->PHPMailer();
}
else
{
echo ''.$logger->showErrors.'';
}
}
else
{
echo
'
<form action="'.$_SERVER['PHP_SELF'].'?mode=logging" method="post">
</form>
';
}
break;
case 'user_logout':
// do somthing
break;
case 'user_settings':
// do somthing
break;
?>
我已决定使用此方法返回错误而不是在方法中打印错误,感谢Igor的建议!
catch (Exception $e)
{
$this->errors[] = $e->getMessage();
#ERROR DE_BUGGING ONLY================================
#print('<pre>');
#print_r($this->errors);
#print('</pre>');
#=====================================================
}
if($this->errors)
{
return false;
}
else
{
return true;
}
答案 0 :(得分:3)
看起来你对OOP代码有一个很好的理解。我看到声明的公共变量甚至是尝试/捕获,但我要说的是不要忘记“function __construct()”前面的“公共”可见性关键字 - 这不是绝对必要的,但它与良好的编码实践保持一致。
此外,我会说你在这里所做的一切都已经被编写,调试和修复,而且已经证实的产品已经被那些数十个PHP框架中的每一个所有。您提到的具体任务“form-&gt; validate-&gt; insertquery-&gt; sendmail-&gt;返回消息和错误”使用我选择的框架Zend Framework非常容易。而我想象Symphony,Solar,Cake等也是如此。
帮自己一个忙,停止编码已编码的内容。学习一个具有社区,定期更新和编写良好的完整文档的框架。我再推荐Zend Framework。
答案 1 :(得分:1)
首先想到的建议:将逻辑与表示分开。您可以先使用Smarty之类的模板引擎。如果你把这一切都搞砸了,很快它将是一个巨大的转储。
还尝试从单独的文件中包含类定义,作为下一步,我建议采用模型 - 视图 - 控制器等模式将模型与逻辑分开。
如果不深入研究代码,我就能想到这一点。