Php 无法检测';返回false';
我有一个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
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