浅谈PHP中静态方法和非静态方法的相互调用
在PHP的非静态方法中可以调用静态方法
class test{
public static function strPrint(){
echo 'this is strPrint static function
';
}
public function staticFuncInvoke(){
self::strPrint();
}
}
$test = new test();
$test->staticFuncInvoke();
上面的代码会输出: this is strPrint static function.
而下面的代码会直接挂掉,php直接给出fatal error:
Fatal error: Using $this when not in object context in E:\htdocs\test\content.php on line 6
class test{
public static function strPrint(){
$this->staticFuncInvoke();
}
public function staticFuncInvoke(){
echo 'this is a nonstatic function named staticFuncInvoke';
}
}
test::strPrint();
以上就是小编为大家带来的浅谈PHP中静态方法和非静态方法的相互调用全部内容了,希望大家多多支持我们~
时间: 2016-10-02
静态调用非静态方法!!这在java,c#中是不可想象的,也是绝对不行的.这样的错误在这些语言中会在编译阶段就被指出错误的.但是对于php这样的动态语言呢?首先这个是语法没有错误的,php –l 找不出错误来的.如果运行呢?先看一个例子 复制代码 代码如下: <?php class myClass { private $name = "myClass"; public function echoName(){ echo $this->name;
本文实例讲述了php中static静态属性和静态方法的调用.分享给大家供大家参考.具体如下: 这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例化对象,就有多少个属性). 实例: <?php header("content-type:text/html;charset=utf-8"); c
本文实例分析了php面向对象中static静态属性与方法的内存位置.分享给大家供大家参考.具体如下: static静态属性的内存位置-->类,而不是对象.下面做测试来证明一下 <?php header("content-type:text/html;charset=utf-8"); class Human{ static public $name = "小妹"; public $height; public function tell(){ } } ec
本文实例讲述了php之static静态属性与静态方法.分享给大家供大家参考.具体如下: <?php /* * static */ /*静态:属于类而不属于单个对象 (全局的,所有对象共享的) *静态属性:类的方法内调用静态属性时,不要使用$this->方式,而要使用self::的方式 *静态方法: *在类没有任何对象的时候也能被调用 *当成普通方法来用也没问题的 *在静态方法中不能调用普通方法 * * */ class xin { static private $name; public fu
在PHP中,使用关键字 static 修饰成员属性和成员方法被称为静态属性和静态方法.静态属性和静态方法不需要在类被实例化的情况下可以直接使用. 静态属性 与普通的成员属性不同,静态属性属于类本身而不属于类的任何实例.静态属性可以被看做是存储在类当中的全局变量,可以在任何地方通过类来访问它们. 由于静态属性不受任何具体对象的限制,所以不需要建立类实例,而可以直接引用类中的静态属性,使用语法格式如下: 类名称::$静态属性名称 其中,符号"::"被称作范围解析操作符,它可以用于访问静态成
静态 public.private.protected 静态属性 在属性或方法前加static关键字,即为静态属性 在实际工作中会有一个类的多个对象,可能会共享一份数据. 解决办法: 1:类常量,不能更改. 示例: 2:有时在共享一份数据后,还要所有的共享此数据的对象还允许更改. 所以就有static 语法: 示例: 提示:静态属性与类常量相似(相同),唯一的区分是类常量不可以更改,静态属性可以更改.访问方法是一样的. :: 只能访问类常量.静态属性.静态方法 静态属性需要加$,常
本文实例讲述了C#中static静态变量的用法.分享给大家供大家参考.具体如下: 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.方法.属性.运算符.事件和构造函数,但不能用于索引器.析构函数或类以外的类型 静态全局变量 定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量. 特点: ① .该变量在全局数据区分配内存. ② .初始化:如果不显式初始化,那么将被隐式初始化为0. 静态局部变量 定义:在局部
php中static 静态变量和普通变量的区别 在变量的前面加上static 就构成了静态变量(static 变量). static变量和普通变量的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的. 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它.由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误. static变
在一个网页中,不仅仅只有一个html骨架,还需要css样式文件,js执行文件以及一些图片等.因此在DTL中加载静态文件是一个必须要解决的问题.在DTL中,使用static标签来加载静态文件.要使用static标签,首先需要{% load static %}. 加载静态文件的步骤如下: 首先确保django.contrib.staticfiles已经添加到settings.INSTALLED_APPS中. 确保在settings.py中设置了STATIC_URL. 注意: 上面两条都是在创建Dja
静态变量初始化顺序 1.简单规则 首先先看一段最普遍的JAVA代码: public class Test { public static Test1 t = new Test1(); public static int a = 0; public static int b; public static void main(String[] arg) { System.out.println(Test.a); System.out.println(Test.b); } } class Test1
看看下面的实例: 复制代码 代码如下: <?php function Test() { $w3sky = 0; echo $w3sky; $w3sky++; } ?> 本函数每次调用时都会将 $w3sky 的值设为 0 并输出 "0".将变量加一的 $w3sky++ 没有其到效果,因为一旦退出本函数则变量 $w3sky 就不存在了.要写一个不会丢失本次计数值的计数函数,要将变量 $w3sky 定义为静态(static)的: 如下: 复制代码 代码如下: <?php f