2013-05-12 136 views
0

我正在慢慢地将我的工作模式转换为函数以及OOP。在PHP中函数之间传递变量

我有一个文件,functions.php,我打电话在登录页面的顶部。

当提交页面上的表单时,我使用函数文件中的函数来检查输入的细节是否正确。如果没有,我会做

if ($how_many<1){ 

    $error .= "<p>You typed the wrong email address and/or password.</p>"; 
    return $error; 

} 

然后在同一个函数文件中有另一个名为anyerrors的函数。这就是:

function anyerrors($error){ 
    echo $error; 
} 

UPDATE:然后在文件中我称之为anyerrors($error);我想要的显示错误。

但是没有显示任何内容?我猜这是因为我在一个函数中创建了变量,并没有进入其他函数。

我的方式在我的逻辑吗?

为了记录我是一个老学校的编码器,我想,并花时间从根本上一步一步地改变我的工作流程。

+0

显示如何调用返回'$ error'的函数。您需要将结果分配给某些内容。 “旧学校编码器”?调用函数并从中返回值是数十年来人们编程的方式。 – Barmar 2013-05-12 09:40:44

+0

它在post文件中更新:然后在文件中我调用anyerrors($ error);我希望显示错误。 – 2013-05-12 09:42:14

+0

函数内部是否有if($ how_many <1)?它必须是,因为它使用'return'。该函数的调用者是否将其值赋给'$ error'? – Barmar 2013-05-12 09:43:00

回答

3

你$错误变量范围仅限于地方,你declare.it可以在全球层面或函数内部的文件中。函数变量是原始数据类型,寿命只有函数存在。所以如果你在一个函数中声明$ error,它将是一个新的变量。如果你想使用全局变量,你将不得不称之为全局变量。

我会亲自避免使用全局,但它会运行

了解globals

$error = ""; 

if ($how_many<1){ 

    $error .= "<p>You typed the wrong email address and/or password.</p>"; 
    return $error; 

} 

function anyerrors($error){ 
    global $error; 
    echo $error; 
} 

我建议创建类,它会使事情变得更容易。

+0

谢谢,很好。我正在阅读越来越多关于面向对象的东西,这是一个很大的帮助,促使我更加努力,再次感谢。 – 2013-05-12 09:49:14

+0

祝你好运..你将享受面向对象的PHP .. – Dinesh 2013-05-12 09:50:44

0

它的使用方法以收益和回声的功能这样的切换回声的功能错误的方式:

function anyerrors($error){ 
    return $error; 
} 



if ($how_many<1){ 

    $error .= "<p>You typed the wrong email address and/or password.</p>"; 
    echo anyerrors($error); 

} 

或保持它的简单,你可以创建错误

后刚刚打印出来
if ($how_many<1){ 

    $error .= "<p>You typed the wrong email address and/or password.</p>"; 
    echo $error; 

} 

高于这个答案只给你使用的返回值的,我希望我的回答可以帮助你,如果你对我的回答另一个问题随时问在评论:)

功能正道
+0

谢谢。我知道我可以使用第二种方法,但是不让我把错误放在我希望显示的地方,除非我将这个逻辑添加到我试图避免保持代码清洁和分离的html文件中。 – 2013-05-12 09:37:26

+0

啊如果答案如何分开你的PHP和HTML文件,也许你应该看看这个答案 - > http://stackoverflow.com/a/95027/1545363 – 2013-05-12 09:51:34

0

看起来平淡无奇的代码应该是这样的

function checkForErrors($type) 
    if ($type =='your type you want') 
    { 
     if ($how_many<1){ 

      $error .= "<p>You typed the wrong email address and/or password.</p>"; 
      return $error; 
     } 

    } 
} 
function anyerrors(){ 
    $errors = checkForErrors('your type you want'); 
    if($errors!="") { 
      echo $errors; 
    } 
} 
+0

这将意味着我创建一个新的功能,每一个单一的错误检查整个站点,而我想要做的只是在函数中填充变量$ error,然后有一个函数在它存在时进行回显。这不可能吗? – 2013-05-12 09:33:31

+0

不,您可以在第一个函数中传递参数并使其通用并检查该特定错误。检查我更新的答案 – 2013-05-12 09:42:38