繁体   English   中英

通过html表单的PHP调用类

[英]PHP call class via html form

只是在想一些事情。 我有一个标准的html表单。 在后端,我使用PHP处理一些API,并且使所有内容都面向对象。 除了一件事情,我对其他一切都很满意。 表单操作调用的PHP文件如下所示

<?php

include 'APIConnection.php';

if (isset($_POST["emailAddress"]) && !empty($_POST["emailAddress"])){
    $email = $_POST["emailAddress"];
    $connection = new APIConnection();
    $response = $connection->getData($email);
}

因此,在一些不错的OO结构中,有一个随机文件会调用我的类。 对我来说似乎有点不合适。 这是惯例吗? 我在考虑如何保持OO,并且正在考虑制作另一个可以由表单调用的类,并在类构造函数中基本完成上述操作。

我只是希望能真正想到解决此问题的正确方法。 我知道上面的工作原理,但是对我来说,它感觉混乱了我到目前为止完成的所有OO代码,因为它不是OO。

谢谢

例如,您可以执行以下操作:

<?php

// new InputHandler class in file: InputHandler.php
class InputHandler {

    public static function post($param_name, $default_value) {
        return (array_key_exists($param_name, $_POST) && !is_null($_POST[$param_name]) ? $_POST[$param_name] : $default_value);
    }

    public static function sanitize_email($value) {
        return filter_var($value, FILTER_SANITIZE_EMAIL);
    }

    public static function validate_email($value) {
        return filter_var($value, FILTER_VALIDATE_EMAIL);
    }
}

并在您的其他php文件中:

<?php
require_once 'APIConnection.php';
// load new class for handling inputs
require_once 'InputHandler.php';

$email = InputHandler::post("emailAddress", '');
$email = InputHandler::sanitize_email($email);

if (InputHandler::validate_email($email)) {
    $connection = new APIConnection();
    $response = $connection->getData($email);
}

这不是一个完整的解决方案,但可能取决于您的OO代码和您的需求!

但是,就我个人而言,我更喜欢使用composer来管理依赖项并随着项目的增长自动加载。 并且有许多书面库供您处理输入数据并通过composer进行加载。 谷歌一下!

听起来好像您不是在使用框架,但是表单发布到的文件实际上是您的路由器。 在这种情况下,它仅特定于此表单。 如果您想要更通用的东西,则可以将所有请求路由到一个文件并在那里处理所有加载。 您可以使用mod_rewrite完成此操作。 下面的示例使用index.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*+)$ index.php?q=$1 [L]

我不知道您的代码结构,但是index.php可以根据路由或适当的API加载适当的控制器(如果这就是您的全部代码库)。 这将是一种RESTful风格的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM