Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法检测';返回false';_Php - Fatal编程技术网

Php 无法检测';返回false';

Php 无法检测';返回false';,php,Php,我有一个PHP类,它可以返回FALSE 由于某种奇怪的原因,我无法检测到错误的返回。 我可以毫无困难地检测任何其他返回值 简化版 error_reporting(E_ALL); ini_set("display_errors", 1); $run = new myClass();//class returns false $response = $run->myMethod(); 我已经测试了以下内容 !$response !isset($response) empty($respon

我有一个PHP类,它可以返回FALSE

由于某种奇怪的原因,我无法检测到错误的返回。 我可以毫无困难地检测任何其他返回值

简化版

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

$run = new myClass();//class returns false
$response = $run->myMethod();
我已经测试了以下内容

!$response
!isset($response)
empty($response)
$response == false
$response === false
对于我熟悉的任何情况,我都无法得到任何类型的反应

如果我将return设置为1或false以外的任何值,$response将包含类返回的任何内容。 这又不是我的第一天。(这是我的第二次)

我使用返回假;而且直到今天才有任何麻烦

当然,我可以通过返回类似“wtf”的内容并测试该条件来修复此问题,但我真的很想弄清楚我在这里缺少了什么


谢谢你的建议。

你是想从
公共函数\uuu construct()
还是
公共函数MyClass()
*中返回false?这将不起作用,因为
new MyClass()
调用将触发PHP错误,或者返回
MyClass
的实例,该实例永远不会计算为false,因为它是对象的实例,因此不会为false

如果您的类不需要实例化才能运行,则可以创建一个静态方法来执行您尝试运行的逻辑,如下所示:

<?php

class MyClass
{
    const COLOUR_BLUE = 'blue';

    public static function isSkyBlue()
    {
        if (isset($_POST['sky']) && $_POST['sky'] == self::COLOUR_BLUE) {
            return true;
        } else {
            return false;
        }
    }
}

// Call doThings() statically to get its value
$response = MyClass::isSkyBlue();
if ($response === false) {
    // Your logic goes here
}

您是否试图从
公共函数\uuuu construct()
公共函数MyClass()
*中返回false?这将不起作用,因为
new MyClass()
调用将触发PHP错误,或者返回
MyClass
的实例,该实例永远不会计算为false,因为它是对象的实例,因此不会为false

如果您的类不需要实例化才能运行,则可以创建一个静态方法来执行您尝试运行的逻辑,如下所示:

<?php

class MyClass
{
    const COLOUR_BLUE = 'blue';

    public static function isSkyBlue()
    {
        if (isset($_POST['sky']) && $_POST['sky'] == self::COLOUR_BLUE) {
            return true;
        } else {
            return false;
        }
    }
}

// Call doThings() statically to get its value
$response = MyClass::isSkyBlue();
if ($response === false) {
    // Your logic goes here
}

您是否试图从
公共函数\uuuu construct()
公共函数MyClass()
*中返回false?这将不起作用,因为
new MyClass()
调用将触发PHP错误,或者返回
MyClass
的实例,该实例永远不会计算为false,因为它是对象的实例,因此不会为false

如果您的类不需要实例化才能运行,则可以创建一个静态方法来执行您尝试运行的逻辑,如下所示:

<?php

class MyClass
{
    const COLOUR_BLUE = 'blue';

    public static function isSkyBlue()
    {
        if (isset($_POST['sky']) && $_POST['sky'] == self::COLOUR_BLUE) {
            return true;
        } else {
            return false;
        }
    }
}

// Call doThings() statically to get its value
$response = MyClass::isSkyBlue();
if ($response === false) {
    // Your logic goes here
}

您是否试图从
公共函数\uuuu construct()
公共函数MyClass()
*中返回false?这将不起作用,因为
new MyClass()
调用将触发PHP错误,或者返回
MyClass
的实例,该实例永远不会计算为false,因为它是对象的实例,因此不会为false

如果您的类不需要实例化才能运行,则可以创建一个静态方法来执行您尝试运行的逻辑,如下所示:

<?php

class MyClass
{
    const COLOUR_BLUE = 'blue';

    public static function isSkyBlue()
    {
        if (isset($_POST['sky']) && $_POST['sky'] == self::COLOUR_BLUE) {
            return true;
        } else {
            return false;
        }
    }
}

// Call doThings() statically to get its value
$response = MyClass::isSkyBlue();
if ($response === false) {
    // Your logic goes here
}

如果你在使用构造函数,它不会返回任何东西…它不是一个普通函数

如果你在使用构造函数,它不会返回任何东西…它不是一个普通函数

如果你在使用构造函数,它不会返回任何东西…它不是一个普通函数

如果你在使用构造函数,它不会返回任何东西…它不是一个正常的函数

当您创建类的实例时,它将始终返回一个对象,而不是返回构造

<?php
class SomeClass
{
    // construct function that will always return false
    public function __construct()
    {
        return false;
    }
}

class TestClass extends PHPUnit_Framework_TestCase
{
    public function testReturn()
    {
         // check if this code returns false
         $this->assertFalse(new SomeClass);
    }

    public function testAssert()
    {
        // Checks if the object return is actually of SomeClass
        $this->assertInstanceOf('SomeClass', new SomeClass);
    }

    public function testReturnOfConstruct()
    {
        //checks the return of the construct
        $object = new SomeClass;
        $this->assertFalse($object->__construct());
    }
}

当您创建类的实例时,它总是返回一个对象,而不是返回构造

<?php
class SomeClass
{
    // construct function that will always return false
    public function __construct()
    {
        return false;
    }
}

class TestClass extends PHPUnit_Framework_TestCase
{
    public function testReturn()
    {
         // check if this code returns false
         $this->assertFalse(new SomeClass);
    }

    public function testAssert()
    {
        // Checks if the object return is actually of SomeClass
        $this->assertInstanceOf('SomeClass', new SomeClass);
    }

    public function testReturnOfConstruct()
    {
        //checks the return of the construct
        $object = new SomeClass;
        $this->assertFalse($object->__construct());
    }
}

当您创建类的实例时,它总是返回一个对象,而不是返回构造

<?php
class SomeClass
{
    // construct function that will always return false
    public function __construct()
    {
        return false;
    }
}

class TestClass extends PHPUnit_Framework_TestCase
{
    public function testReturn()
    {
         // check if this code returns false
         $this->assertFalse(new SomeClass);
    }

    public function testAssert()
    {
        // Checks if the object return is actually of SomeClass
        $this->assertInstanceOf('SomeClass', new SomeClass);
    }

    public function testReturnOfConstruct()
    {
        //checks the return of the construct
        $object = new SomeClass;
        $this->assertFalse($object->__construct());
    }
}

当您创建类的实例时,它总是返回一个对象,而不是返回构造

<?php
class SomeClass
{
    // construct function that will always return false
    public function __construct()
    {
        return false;
    }
}

class TestClass extends PHPUnit_Framework_TestCase
{
    public function testReturn()
    {
         // check if this code returns false
         $this->assertFalse(new SomeClass);
    }

    public function testAssert()
    {
        // Checks if the object return is actually of SomeClass
        $this->assertInstanceOf('SomeClass', new SomeClass);
    }

    public function testReturnOfConstruct()
    {
        //checks the return of the construct
        $object = new SomeClass;
        $this->assertFalse($object->__construct());
    }
}

您是否对响应变量进行了var_转储,以准确查看它返回的内容?这不是火箭科学…如果你做gettype($response),你会得到什么?
var\u dump($response)
会回答你的问题。从构造函数返回除对象之外的任何内容都不是一个好主意……var_dump()和&gettype()返回的内容完全相同。。。。没有什么。浏览器窗口中没有任何类型的可见数据。的可能重复您是否对响应变量进行了var_转储以查看其返回的内容?这不是火箭科学…如果你做gettype($response),你会得到什么?
var\u dump($response)
会回答你的问题。从构造函数返回除对象之外的任何内容都不是一个好主意……var_dump()和&gettype()返回的内容完全相同。。。。没有什么。浏览器窗口中没有任何类型的可见数据。的可能重复您是否对响应变量进行了var_转储以查看其返回的内容?这不是火箭科学…如果你做gettype($response),你会得到什么?
var\u dump($response)
会回答你的问题。从构造函数返回除对象之外的任何内容都不是一个好主意……var_dump()和&gettype()返回的内容完全相同。。。。没有什么。浏览器窗口中没有任何类型的可见数据。的可能重复您是否对响应变量进行了var_转储以查看其返回的内容?这不是火箭科学…如果你做gettype($response),你会得到什么?
var\u dump($response)
会回答你的问题。从构造函数返回除对象之外的任何内容都不是一个好主意……var_dump()和&gettype()返回的内容完全相同。。。。没有什么。浏览器窗口中没有任何类型的可见数据。可能存在重复数据。您可能需要进一步解释这一功能。对于这个答案,基于PHPUnit的代码可能有点高级。不过演示得不错。:)您可能想进一步解释一下它的作用。对于这个答案,基于PHPUnit的代码可能有点高级。不过演示得不错。:)您可能想进一步解释一下它的作用。对于这个答案,基于PHPUnit的代码可能有点高级。不过演示得不错。:)你可能想解释一下t