导航:首页 > 编程语言 > php调用static方法

php调用static方法

发布时间:2024-11-27 08:50:28

1. php static 方法有什么好处

  1. 静态方法不需要所在类被实例化就可以直接使用。

  2. 静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。

  3. 静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。

2. 使用thinkphp写代码,public/static/js/1.js内怎样引用public/static/img/bs/2.jpg图片文件 以下代码不行

TP5引入静态文件方法大致如下:

  1. 直接写/static/img/demo.jpg,解释:TP5的根目录解析到public目录下,所以直接写/static/会直接读取到/public/static下

  2. 将TP3中的__ROOT___或者__STATIC__写入到配置文件当中,__ROOT___在TP中实际为模板的替换规则,那么在TP5中将这些默认规则取消了,需要自主配置才可生效,配置如下:

///视图输出字符串内容替换
'view_replace_str'=>[//默认这里是没有字符的
'__PUBLIC__'=>'/public/',
'__ROOT__'=>'/',
]

3. php中怎么调用方法中的静态变量

看看下面的实例:
<?php
function Test()
{
$w3sky = 0;
echo $w3sky;
$w3sky++;
}
?>

本函数每次调用时都会将 $w3sky 的值设为 0 并输出 "0"。将变量加一的 $w3sky++ 没有其到效果,因为一旦退出本函数则变量 $w3sky 就不存在了。
要写一个不会丢失本次计数值的计数函数,要将变量 $w3sky 定义为静态(static)的:
如下:
<?php
function Test()
{
static $w3sky = 0;
echo $w3sky;
$w3sky++;
}
?>

4. php 使用静态方法的几个注意事项说明

1.即使类中的方法并未用static声明,但其未使用到可改变的类成员变量,在外部仍可用操作符::来调用;

2.以静态方式(用::操作符)调用的方法中$this的取值是由调用时的上下文决定的!而不是定义他的类!!

例如以下的代码:

<?php
classTestClass1
{
public$normal_v='normal_vfromTestClass1';
publicstatic$STATIC_V='STATIC_VfromTestClass1';
publicfunctiontest_func1()
{
echo$this->normal_v.'<br/>'.self::$STATIC_V;
}
}
classTestClass2
{
public$normal_v='normal_vfromTestClass2';
publicstatic$STATIC_V='STATIC_VfromTestClass2';
publicfunctiontest_func2()
{
TestClass1::test_func1();
}
}
$t2=newTestClass2();
$t2->test_func2();

这段代码是输出会是什么呢,我原以为会是normal_v from TestClass1 <br /> STATIC_V from TestClass1,测试发现其实我错了,正确的输出是:

normal_v from TestClass2
STATIC_V from TestClass1

说明:test_func1()虽然是在TestClass1中定义的,但却是在TestClass2中调用的,其内部的$this变量则是由TestClass2决定的!

其实这两个类的关系应该属于"双向关联".

5. php中static静态类与static 静态变量用法区别

1. 创建对象$object = new Class(),然后使用”->”调用:$object->attribute/function,前提是该变量/方法可访问。
2. 直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件:
A. 如果是变量,需要该变量可访问。
B. 如果是方法,除了该方法可访问外,还需要满足:
b1) 如果是静态方法,没有特殊条件;
b2) 如果是非静态方法,需要改方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题。
然后我们再看一下使用$object->… 和使用class::… 都有什么区别:
1. 使用$object->… ,需要执行构造函数创建对象;
2. 使用class::… 调用静态方法/变量,不需要执行构造函数创建对象;
3. 使用class::… 调用非静态方法/变量,也不需要执行构造函数创建对象。
然后奇怪的地方就出来了,既然2和3都一样,那静态方法/变量存在还有什么意义呢?
静态 static
声明类成员或方法为 static ,就可以不实例化类而直接访问,不能通过一个对象来访问其中的静态成员(静态方法除外)。静态成员属于类,不属于任何对象实例,但类的对象实例都能共享。

6. php面向对象编程self和static的区别

在php的面向对象编程中,总会遇到
class test{
public static function test(){
self::func();

static::func();
}

public static function func(){}
}
可你知道self和static的区别么?

其实区别很简单,只需要写几个demo就能懂:

Demo for self:

class Car
{
public static function model(){
self::getModel();
}

protected static function getModel(){
echo "This is a car model";
}
}
Car::model();
Class Taxi extends Car
{
protected static function getModel(){
echo "This is a Taxi model";
}
}
Taxi::model();
得到输出
This is a car model
This is a car model
可以发现,self在子类中还是会调用父类的方法

Demo for static

class Car
{
public static function model(){
static::getModel();
}

protected static function getModel(){
echo "This is a car model";
}
}

Car::model();

Class Taxi extends Car
{
protected static function getModel(){
echo "This is a Taxi model";
}
}

Taxi::model();
得到输出
This is a car model
This is a Taxi model
可以看到,在调用static,子类哪怕调用的是父类的方法,但是父类方法中调用的方法还会是子类的方法(好绕嘴。。)

在PHP5.3版本以前,static和self还是有一点区别,具体是什么,毕竟都是7版本的天下了。就颤消此不去了解了。

总茄迅结呢桥握就是:self只能引用当前类中的方法,而static关键字允许函数能够在运行时动态绑定类中的方法。

7. php public static function 怎么用

//这个是静态方法,没有实例,直接调用即可:

classMyClass{

publicstaticfunctionaction(){
return'staticaction..';
}

}

echoMyClass::action();//staticaction

8. php static::

static关键字从PHP5.0就存在了。但从未有过"static::"这样的写法。
static的用法类似与C++, C#, Java,
class A{
static public function foo(){}
}
然后就可以以静态方式调用A::foo();

PHP4.x不需要写static,所有的方法都可以静态调用。

阅读全文

与php调用static方法相关的资料

热点内容
shell命令jar 浏览:294
有什么做手帐app 浏览:156
phpjquery源码 浏览:884
大话西游手游源码 浏览:653
javaudp代码 浏览:660
linuxu盘启动win7 浏览:990
如何启用交换机dhcp服务器 浏览:237
三田汽车压缩机好吗 浏览:294
马蜂窝app偏向什么客户 浏览:366
php简单的登录注册 浏览:554
我们接到上级命令 浏览:349
php本周星期一 浏览:65
裘锡圭pdf 浏览:726
android模拟器调试 浏览:135
sap命令大全 浏览:296
mysql导出数据命令 浏览:954
文件夹隐藏了出不来 浏览:564
电信网上大学源码 浏览:206
rr轮转调度算法 浏览:253
我的世界无法登入服务器怎么办 浏览:151