gpt4 book ai didi

php - 您会使用 OOP PHP 以相同的方式编写此代码吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:57 26 4
gpt4 key购买 nike

我正在尝试使用我的一个脚本进行 oop。这是一个联系人脚本,在通过 jQuery 的 ajax 函数发送电子邮件时处理编码。

我想让用户能够在同一个页面中使用同一个脚本和两个表单,并让它变得简单。

现在,我已经制作了一个原型(prototype),说明如何使用 oop 重写它。

我真的很困惑,但我每天都在学习。对我来说最困难的部分是我应该在哪里放置我的方法以及如何制作脚本的流程。

为了证明我的意思,这里是我现在使用的部分代码:

/*
* Start defining some vars at the runtime
*/
public function __construct($data, $config = array()) {
$lang = isset($config['language']) ? $config['language'] : 'en';
$this->_getPhrases($lang);
$this->_recieverEmail = isset ($config['reciever_email']) ? filter_var($config['reciever_email'], FILTER_SANITIZE_EMAIL) : die($this->_phrase['noRecieverEmail']);
$this->_ajax = ($this->_enableAjax($config['ajax_enabled'])) ? true : false;
$this->_data = isset($data) ? (is_array($data) ? $data : die($this->_phrase['errors']['dataNotArray'])) : $_POST;
}

/*
* Send the message
*/
public function send() {
if(!$this->isDataVaild($this->_data)) {
return false;
}

$this->_data = $this->_cleanData($this->_data);
$this->setSenderName($this->_data['name']);
$this->setSenderEmail($this->_data['email']);
$this->_message = $this->_generateMsg($this->data);

$PHPMailer = new PHPMailerLite();
$this->_sendUsing($PHPMailer, $this->_message);

return true;
}

我之所以选择这两种方法,是因为它们为我的脚本完成了大部分工作。我这样使用它:

$config = array(
'language' => 'en',
'ajax_enabled' => false,
'reciever_email' => 'recieve@localhost'
);

$contact = new coolContact($_POST, $config);

if($contact->send()) {
echo 'Message sent with No problems';
} else {
echo $contact->getErrors();
}

在所有这些之后,这是我的问题:

我的问题

  1. 我应该在 send() 方法内还是在 _generateMsg() 内进行验证?
  2. 这段代码可以被认为是 oop php 吗?

问题 1 对某些人来说可能很奇怪,所以让我解释一下:

在用我认为的 oop 重写代码后,我现在可以在不破坏代码的情况下按许多顺序使用这些方法,这就是为什么我很困惑何时何地使用它的最佳位置。

最佳答案

如果我是你,我会将验证放在它自己的方法中,validate()。这样您就可以从任何函数调用该代码。尝试使每个方法尽可能简短和有趣,并尽可能将方法组合成更大的方法。看起来您可能已经将验证设为自己的函数,在这种情况下,调用它的位置取决于您逻辑中需要验证数据的位置。如果 coolContact 可以存在无效数据,但在数据更正之前无法发送,则在 send() 中进行验证。如果 coolContact 必须有有效数据,期间,它永远不能存在无效数据,那么 _generateMsg() 应该调用 validate()

至于 #2,我会考虑这个 OOP,是的。但是我在这里的两个答案都是意见......

关于php - 您会使用 OOP PHP 以相同的方式编写此代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3588407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com