如PHP手册所述
从PHP 7.0.0开始,静态地调用一个非静态方法通常已经被废弃(即使是从兼容的上下文中调用)。
去查查这份声明-
我在类之外调用一个非静态方法,然后生成错误。
class A{
public function foo(){
echo "testing<br/>";
}
}
A::foo();
弃用:非静态方法A::foo()不应静态调用
但是,当我在类中调用一个非静态方法时,它就不会生成Deprecated error。
class A{
public function foo(){
此代码运行良好:
<?php
class Test {
public function hi($data) {
$instance = !(isset($this) && $this instanceof self) ? new static() : $this;
echo "HI!!! ".$data."\n";
return $instance;
}
public function log($data) {
$instance = !(isse
在我试图理解的一些遗留代码中,我发现了一些奇怪的行为。我把它简化为一个简单的测试用例。
<?php
class Foo {
function DoFoo() {
print("[" . get_called_class() . "]");
}
}
class Bar {
function DoBar() {
Foo::DoFoo();
}
}
// Called by direct static call.
Foo::DoFoo();
// Called by indirect
考虑一下这个例子,
class A {
public function who() {
echo 'The name of the class is ' . __CLASS__;
}
}
A::who();
输出:类名为A
而这个,
class A {
public $vars=12;
}
echo A::$vars;
会导致以下错误,
致命错误:未声明的错误:对未声明的静态属性的访问: A::$var在G:\xampp\htdocs\Learn_PHP\PHP1\name_class.p
(PHP7)我有两个类,但希望访问另一个类中的一个类,例如:
Syntax: Property::House()->getAddress();
class Property
{
protected $House;
function Property()
{
self::$House = new House();
}
public function House()
{
return self::$House;
}
}
class House
{
public function getAddress()
{
// code
我创建了一个Symfony命令,它解析一个IMAP邮箱。已安装并启用IMAP扩展。
当我执行命令时,会出现以下错误:
[Symfony\Component\Debug\Exception\UndefinedFunctionException]
Attempted to call function "imap_open" from namespace "CAB\MainBundle\Imap".
但是通过浏览器,我没有这个错误,而且imap_open是没有错误地执行的。
为什么imap_open在从控制台执行时不存在?
从PHP 5升级到PHP 7之后,下面的代码产生了不同的结果:
abstract class TheParent {
public static $prop;
public function __construct( $val ) {
static::set_prop($val);
}
public static function set_prop( $val ) {
$ref_reset = $val;
static::$prop =& $ref_reset;
}
}
class Child
所以我有一个问题,我可以静态地调用一个对象方法,反之亦然。这是应该发生的还是万一我做错了什么?
PHP版本: 5.6.12 XAMPP版本: 3.2.1
function endl()
{
echo "<br>";
}
class Base
{
public function objectFunc($msg)
{
echo "You called a non-static function from " . $msg;
endl();
}
public static func
给定以下代码:
<?php
class MyClass {
public function print() {
echo $this->number . "\n";
}
public static function staticPrint() {
echo "staticPrint\n";
}
}
class MyExtendedClass extends MyClass {
protected $number = 100;
public function exte
在我的Apache错误日志中,我每天都会看到下面的PHP错误。
[Wed Dec 26 01:31:33.736040 2018] [php7:error] [pid 14965] [client 129.204.75.228:62753] script '/var/www/html/help.php' not found or unable to stat
[Wed Dec 26 01:31:33.968964 2018] [php7:error] [pid 14965] [client 129.204.75.228:62753] script '/var/www/h
class A {
public $a = "BooMBa";
public function fun1() {
echo $this->a;
// echo (new self)->a;
}
}
class B extends A {
public static function fun2() {
return (new self)->fun1();
// return static::fun1();
}
}
B::fun2(); // returns B
执行make && make install时,提示下面的错误:【错误只是一部分】
/root/memcached-2.2.0/php_memcached.c: In function ‘zm_startup_memcached’:
/root/memcached-2.2.0/php_memcached.c:4496: error: ‘php_memc_new’ undeclared (first use in this function)
/root/memcached-2.2.0/php_memcached.c:4508: error: too many argument