【php面向对象中static静态属性和静态方法的调用_PHP】教程文章相关的互联网学习教程文章

开启PHP Static 关键字之旅模式

声明类成员或方法为static,就可以不实例化类而直接访问。不能通过一个对象来访问其中的静态成员(静态方法除外)。 为了兼容PHP4,如果没有指定“可见性”,属性和方法默认为public。 由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。 静态属性不可以由对象通过->操作符来访问。 用::方式调用一个非静态方法会导致一个E_STRICT级别的错误。 就像其它所有的PHP静态变量一样,静态属性只能被初始化为一个字...

PHP中static关键字以及与self关键字的区别

概述 正在学习设计模式,之前有一篇文章关于单例模式的文章,重新读了这篇文章,发现对static关键字掌握不是很牢靠,重新温习一下。 static关键字 PHP手册里对static关键字的介绍如下:代码如下: Declaring class properties or methods as static makes them accessible without needing an instantiation of the class. A property declared as static cannot be accessed with an instantiated class object (though a static m...

PHP面向对象程序设计中的self、static、parent关键字用法分析

本文实例讲述了PHP面向对象程序设计中的self、static、parent关键字用法.分享给大家供大家参考,具体如下: 看到php里面有关于后期静态绑定的内容,虽然没有完全看懂,但是也收获不少东西。 php官方手册介绍: http://php.com/manual/zh/language.oop5.late-static-bindings.php 不存在继承的时候 不存在继承的意思就是,就书写一个单独的类来使用的时候。self和static在范围解析操作符 (::) 的使用上,并无区别。 在静态函数中...

PHP new static与new self【代码】

读TP6源码时,从其类中有一段代码如下:/*** 获取当前容器的实例(单例)* @access public* @return static*/public static function getInstance(){if (is_null(static::$instance)) {static::$instance = new static;}if (static::$instance instanceof Closure) {return (static::$instance)();}return static::$instance;}其中,new static这种用法平常不常用,其实是使用了静态延迟绑定,static不再被解析为定义当前方法所在的...

PHP面向对象程序设计中的self、static、parent关键字用法分析【代码】

这篇文章主要介绍了PHP面向对象程序设计中的self、static、parent关键字用法,结合实例形式分析了self、static、parent关键字功能、应用场景及相关使用技巧,需要的朋友可以参考下,本文实例讲述了PHP面向对象程序设计中的self、static、parent关键字用法.分享给大家供大家参考,具体如下:看到php里面有关于后期静态绑定的内容,虽然没有完全看懂,但是也收获不少东西。不存在继承的时候,不存在继承的意思就是,就书写一个单独的类来...

有什么理由或用例在php中使用self关键字而不是static关键字?【代码】

从php 5.3开始,static关键字解决了后期的静态绑定问题,可以像大多数其他OO语言使用self一样使用它.在PHP中自我仍然存在. 我知道两个关键字在功能上是如何分开的,如之前在此问题中指出的:Is there any reason to use the self keyword?. 但是,我的问题是:谁能给出一个原因,说明为什么您希望在仅可与5.3或更高版本的PHP一起运行的代码中使用self?自我有更好的表现吗?我还没有找到任何使用self关键字的引人注目的用例.我的理解是,...

php-引用const变量时哪个最好$this或self或static?【代码】

我了解到静态优于自我,因为自我进行了后期的静态绑定. 但是我想知道哪种方法最适合引用const变量.class Black {const color = 'black';public function byThis(){return $this::color;}public function bySelf(){return self::color;}public function byStatic(){return static::color;} }我检查了所有三个吸气剂是否工作良好.哪个是最佳选择? (我使用PHP 7.0)解决方法:PHP class constants documentation建议对类中的常量使用sel...

java和PHP之间使用static的区别?

我在Java中读到,静态函数只能访问静态函数或静态变量.我试图找出在PHP和Java中使用static的区别. > PHP也一样吗?>我们可以在PHP的静态函数内调用非静态函数吗?解决方法:Can we call non-static function inside the static function, in PHP?是的,但不建议.由于$this关键字在静态上下文中不可用.但是,您可以使用static / self关键字来执行此操作,但这将导致发出严格的标准通知Strict standards: Non-static method A::foo() shou...

PHP面向对象(OOP):.static和const关键字的使用(self::)【代码】

static关键字是在类中描述成员属性和成员方法是静态的;静态的成员好 处在哪里呢?前面我们声明了“Person”的人类,在“Person”这个类里如果我们加上一个“人所属国家”的属性,这样用“Person”这个类实 例化出几百个或者更多个实例对象,每个对象里面就都有“所属国家”的属性了,如果开发的项目就是为中国人而开发的,那么每个对象里面就都有一个国家的属性 是 “中国“其它的属性是不同的,如果我们把“国家”的属性做成静态...

PHP const / static变量在父类的静态上下文中不可用【代码】

由于某种原因(哪个?),子类中定义的PHP const / static变量在父类的静态上下文中不可用. 为什么? 例1:class Model{function getAll(){$query = "SELECT * FROM " . self::DATABASE_TABLE_NAME;// ...} }class Post extends Model{const DATABASE_TABLE_NAME = 'post'; }$p = Post::getAll();当我跑步时,我得到:Fatal error: Undefined class constant 'DATABASE_TABLE_NAME' on line 3 ($query = …的行) 例2:class Model{func...

php – isset on static class attributes【代码】

class A {public static $foo = 42; }$class = 'A'; $attribute = 'foo';var_dump(isset($class::$attribute)); //gives bool(false)我怎么能检查这个静态属性是否存在于这个类中?解决方法:使用variable variables:var_dump(isset($class::$$attribute)); // the two dollars are intentional如果你没有PHP 5.3,唯一准确的方法可能是使用Reflection API:$reflectionClass = new ReflectionClass($class); $exists = $reflection...

php – make pdo :: query static【代码】

我运行下面的代码时出现此错误.我通常使用msql函数,但我试图使用PDO.怎么了 ? 致命错误:非静态方法PDO :: query()不能在第14行静态调用<?php if(isset($_POST['username']) AND isset($_POST['password'])) {$username = $_POST['username']; $password = $_POST['password']; $password_hash = md5($password);if (!empty($username) AND !empty($password) ) {$query = "SELECT 'id' FROM `userdatabase` WHERE 'email'='$user...

php static 静态变量的基本用法【代码】【图】

1 <?php2 3 function staticFun()4 {5 $i = 1;6 static $y = 3;7 $i++;8 $y++;9 echo $i.<br>; 10 echo $y.<br>; 11 } 12 13 staticFun(); 14 echo <hr>; 15 staticFun(); 16 echo <hr>; 17 staticFun(); 结果:

php – Mocking Static Eloquent Models方法包括find()【代码】

我一直在关注一般的Mockery和PHP-Unit教程 – 包括Jeffrey Way介绍用PHP-Unit和Mockery测试Laravel.但是,对于这个应用程序 – 我们很好地依赖于Eloquent,而宁愿不创建存储库类. 我们能够很好地模拟我们的Widget模型的实例方法.但是,我们正在使用Route:模型绑定,并且我承认在测试控制器的show($widget)方法时,我不确定如何模拟模型的find()方法. 我已经阅读了https://github.com/padraic/mockery/wiki#mocking-public-static-metho...

php – 为什么Eclipse反对`static :: $var`?【代码】

我在PHP类中有以下静态函数:static function __callStatic($method,$args){$called=NULL;if(empty(static::$collection)) static::slurp();if(method_exists(static::$objtype,$method)){foreach(static::$collection as $obj){$called[]= call_user_func_array(array($obj, $method), $args);}} else if (property_exists(static::$objtype,$method)){ //$method isn't a method, it's a propertyforeach(static::$collection as...

静态方法 - 相关标签