基于URI调用PHP函数

基于URI调用PHP函数,php,Php,我希望创建一个基于URI的简单php脚本,它将调用某个函数 我希望能够访问: /开发/查看/发布/ 它将调用我在PHP脚本中创建的“posts”函数 任何帮助都将不胜感激 谢谢 您使用的是框架吗?他们为你做这种事 您需要在apache中使用 基本上,您可以使用/dev/view/posts 并将其改写为 /dev/view.php?page=posts RewriteEngine On RewriteRule ^/dev/view/posts/(.*)$ /dev/view?page=$1

我希望创建一个基于URI的简单php脚本,它将调用某个函数

我希望能够访问:

/开发/查看/发布/

它将调用我在PHP脚本中创建的“posts”函数

任何帮助都将不胜感激


谢谢

您使用的是框架吗?他们为你做这种事

您需要在apache中使用

基本上,您可以使用/dev/view/posts 并将其改写为 /dev/view.php?page=posts

 RewriteEngine On
 RewriteRule ^/dev/view/posts/(.*)$ /dev/view?page=$1
in view.php

switch($_REQUEST['page'])
{
    case 'posts':
        // call posts
        echo posts();
        break;
}
EDIT调用了任何称为“page”的函数

您可能希望使用一个框架来实现这一点,因为存在安全隐患。但很简单,你可以做到这一点:

if (array_key_exists('page',$_REQUEST))
{
    $f = $_REQUEST['page'];
    if (is_callable($f))
    {
        call_user_func($f);
    }
}

注意,有很多更好的方法可以做到这一点!你应该使用一个框架

您使用的是框架吗?他们为你做这种事

您需要在apache中使用

基本上,您可以使用/dev/view/posts 并将其改写为 /dev/view.php?page=posts

 RewriteEngine On
 RewriteRule ^/dev/view/posts/(.*)$ /dev/view?page=$1
in view.php

switch($_REQUEST['page'])
{
    case 'posts':
        // call posts
        echo posts();
        break;
}
EDIT调用了任何称为“page”的函数

您可能希望使用一个框架来实现这一点,因为存在安全隐患。但很简单,你可以做到这一点:

if (array_key_exists('page',$_REQUEST))
{
    $f = $_REQUEST['page'];
    if (is_callable($f))
    {
        call_user_func($f);
    }
}

注意,有很多更好的方法可以做到这一点!你应该使用一个框架

您需要的是在web服务器上重写URL的一种形式。例如,如果您使用的是Apache,您应该查找mod_rewrite。您的规则可能是什么样子的示例:

RewriteEngine On
RewriteRule ^/dev/view/posts/(.*)$ /posts.php?id=$1

但我假设您希望有一个跟踪帖子ID或类似的ID,以便您可以将其用于多个帖子URL。

您正在寻找的是在web服务器上重写URL的一种形式。例如,如果您使用的是Apache,您应该查找mod_rewrite。您的规则可能是什么样子的示例:

RewriteEngine On
RewriteRule ^/dev/view/posts/(.*)$ /posts.php?id=$1
但是我假设您希望有一个尾随post ID或类似的ID,以便可以将其用于多个post URL。

查看函数文档

$functions['/dev/view/posts']    = 'function_a';
$functions['/dev/view/comments'] = 'function_b';
$functions['/dev/view/notes']    = 'function_c';

$uri = '/dev/view/comments';

call_user_func($functions[$uri]);
看看函数文档

$functions['/dev/view/posts']    = 'function_a';
$functions['/dev/view/comments'] = 'function_b';
$functions['/dev/view/notes']    = 'function_c';

$uri = '/dev/view/comments';

call_user_func($functions[$uri]);

我知道如何使用mod_rewrite,但问题是我需要编写代码,使每个“posts”与“posts”函数匹配。通过框架思想,您可以编写一个函数posts(),然后转到/dev/view/posts/,它将调用该函数。您使用的是什么框架?您不需要转义
/
字符。有点相关,这是一个很好的例子,可以将其带到下一个级别,可能有点太远了!它不使用switch语句,而是检查控制器文件是否有与参数值匹配的方法。不安全,但这很重要。我知道如何使用mod_rewrite,但问题是我需要编写代码,使每个“posts”与“posts”函数匹配。通过框架思想,您可以编写一个函数posts(),然后转到/dev/view/posts/,它将调用该函数。您使用的是什么框架?您不需要转义
/
字符。有点相关,这是一个很好的例子,可以将其带到下一个级别,可能有点太远了!它不使用switch语句,而是检查控制器文件是否有与参数值匹配的方法。不安全,但很重要。这就是我要找的。谢谢!这就是我要找的。谢谢!