【问题标题】:PHP function scope calling a function within a function [closed]PHP函数范围在函数内调用函数[关闭]
【发布时间】:2014-07-07 19:27:15
【问题描述】:

我在搜索时找不到任何关于我的问题的信息。也许我的搜索措辞不正确。无论如何,我试图从另一个函数内部的另一个文件调用一个函数,但它不起作用。这似乎是一个范围问题。我有以下内容:

文件1.php:

<?
function myCoolFunction()
{
    // Some really cool stuff in here
}

然后在File2.php中:

<?
require('File1.php');

// A bunch of stuff

function anotherCoolFunction()
{
    // Do some stuff

    myCoolFunction();
}

myCoolFunction 不存在于 anotherCoolFunction 中。我可以在 File2.php 中调用它,但不能在另一个函数中调用它。所以我的问题是,如何做到这一点? php中有没有超级全局函数之类的东西?

感谢您的帮助!

【问题讨论】:

  • 有什么理由不使用function 关键字,即function myCoolFunction() { ... } 进行定义?
  • 我是。忘记在代码 sn-p 中添加那部分。

标签: php function scope


【解决方案1】:

现在应该可以了, 要点:不推荐使用短标签。 如果你找不到错误,不要只是 stackOverflow 它把这个漂亮的 ini_set() 显示由 php.ini 设置的错误实用程序 是的..你在声明函数之前使用函数关键字。

<?php
    function myCoolFunction()
    {
        // Some really cool stuff in here
    }


    <?php
    ini_set("display_error",1);
    require('File1.php');

    // A bunch of stuff

    function anotherCoolFunction()
    {
        // Do some stuff

        myCoolFunction();
    }

【讨论】:

    【解决方案2】:

    对于初学者,请使用function 关键字来定义函数。

    当您以自己的方式需要文件时,您会将其内容带入您所在文件的范围内。(命名空间内的文件是另一回事。)

    想想你的File2.php

    <?
    require('File1.php');
    
    // A bunch of stuff
    
    function anotherCoolFunction()
    {
        // Do some stuff
    
        myCoolFunction();
    }
    

    做同样的事情:

    <?
    function myCoolFunction()
    {
        // Some really cool stuff in here
    }
    
    // A bunch of stuff
    
    function anotherCoolFunction()
    {
        // Do some stuff
    
        myCoolFunction();
    }
    

    最后,(我之所以这么说只是因为我在您的代码中没有看到它)请确保您调用了封装函数。例如

    $var = anotherCoolFunction();
    

    【讨论】:

      【解决方案3】:

      如果你正确定义了你的函数,它会起作用的

      function myCoolFunction()
      {
       echo 'hello';   // Some really cool stuff in here
      }
      
      function anotherCoolFunction()
      {
          // Do some stuff
      
          myCoolFunction();
      }
      
      anotherCoolFunction();
      

      下次尝试启用错误报告

       error_reporting(E_ALL);
       ini_set('display_errors', 1);
      

      【讨论】:

        猜你喜欢
        • 2012-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-22
        • 2012-06-06
        • 2011-06-12
        相关资源
        最近更新 更多