1

代码示例;

PHP 网页:(index.php)

 <html><head></head>
    <body>
    <?php 
    include("class_validation.php");
    $val = new validation();

        if(isset($_POST['action'])) doSomething();

    function doSomething() {
        $val->validate(); //I AM UNABLE TO DO THIS!
    }
    ?>
    </body>
    </html>

PHP 文件:(class_validation.php)

<?php
class validation()
{
    function validate(){
        //some validation
    }
}
?>

问题:如何在我在 PHP 网页中创建的函数中调用“class_validation.php”文件中的函数?我可以正确调用函数 doSomething() 以及调用函数 $val->validate(); 当不在另一个函数中时。我有办法做到这一点吗?

4

2 回答 2

3

$val超出该doSomething()函数调用的范围。将其作为参数传递给函数:

// Define the function to accept a parameter. Use a type hint to be sure it is 
// a validation object
function doSomething(validation $val) {
  $val->validate(); 
}

if(isset($_POST['action'])) doSomething($val);

关于类型提示的 PHP 文档

或者,不推荐,您可以使用global函数内部的关键字来引用全局$val.

function doSomething() {
  // Don't do it this way. The func parameter is preferred
  global $val;
  $val->validate(); 
}
于 2012-11-16T02:52:47.450 回答
0

您似乎正在寻找仅适用于匿名函数的闭包支持。

根据您的代码示例,它似乎不是一个正确的用例。也许您应该将此值作为函数参数传递?

于 2012-11-16T02:53:12.033 回答