*对不起,我现在正在学习英语,我的英语仍然不太好。请理解我的情况。
据我所知,Static需要像Class :: Function(params)一样使用;
喜欢这个。
class Foo {
static function Bar($msg){
echo $msg;
}
}
XE中有一个文件(在韩国开发的CMS) (XE官方网站:http://www.xpressengine.com/?l=en)
当然,这是真实文件的摘要
<?php
/**
* Manages Context such as request arguments/environment variables
* It has dual method structure, easy-to use methods which can be called as self::methodname(),and methods called with static object.
*/
class Context
{
/**
* codes after <body>
* @var string
*/
public $body_header = NULL;
/**
* returns static context object (Singleton). It's to use Context without declaration of an object
*
* @return object Instance
*/
function &getInstance()
{
static $theInstance = null;
if(!$theInstance)
{
$theInstance = new Context();
}
return $theInstance;
}
/**
* Add html code after <body>
*
* @param string $header Add html code after <body>
*/
function addBodyHeader($header)
{
is_a($this, 'Context') ? $self = $this : $self = self::getInstance();
$self->body_header .= "\n" . $header;
}
}
这是此文件顶部的评论。
它具有双重方法结构,易于使用的方法可以调用 as self :: methodname(),以及使用静态对象调用的方法。
在这个评论中,它可以使用Class :: Function(),我一直在XE中使用 但它并没有告诉他们如何制作。我该怎么做呢?
编辑1:
该文件的名称是Context.class.php,它包含在其他文件中。
<?php
require(_XE_PATH_ . 'classes/context/Context.class.php');
Context::addBodyHeader("Some Codes");
?>
答案 0 :(得分:2)
在这种情况下,他们使用self
,它不需要静态,您可以将self::
与$this->
进行比较,只是self::
也适用于静态函数。
也许the manual会帮助你
答案 1 :(得分:2)
在这个评论中,它可以使用Class :: Function()并且我一直在使用它 XE。但它并没有告诉他们如何制作。我该怎么做呢?
::
称为scope resolution operator。
他们如下:
class MyClass {
public static function saySomething() {
echo 'hello';
}
public function sayHello() {
echo 'hello';
}
public function helloSay() {
self::sayHello();
}
}
MyClass::saySomething();
MyClass::sayHello();
MyClass::helloSay();
他们都输出:hello
答案 2 :(得分:1)