首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有类的PHP封装?

问没有类的PHP封装?
EN

Stack Overflow用户
提问于 2011-08-10 09:51:36
回答 3查看 670关注 0票数 1

比方说,有没有可能在PHP中封装一个变量或函数,而不将它们包装在一个类中?我所做的是:

代码语言:javascript
复制
//Include the file containing the class which contains the variable or function
include('SomePage.php');

//Instantiate the class from "SomePage.php"
$NewObject = new SomeClassFromSomePage();

//Use the function or variable
echo $NewObject->SomeFuncFromSomeClass();
echo $NewObject->SomeVarFromSomeClass;

我的意图是避免命名冲突。这个例行公事,虽然有效,但让我感到疲倦。如果我不能在没有类的情况下做到这一点,那么有可能不实例化一个类吗?直接使用变量或函数?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-10 09:54:00

要在不实例化的情况下使用类方法和变量,必须将它们声明为static

代码语言:javascript
复制
class My_Class
{ 
    public static $var = 123;

    public static function getVar() {
     return self::var;
    }
}


// Call as:
My_Class::getVar();

// or access the variable directly:
My_Class::$var;

在PHP5.3中,您还可以使用namespaces

代码语言:javascript
复制
namespace YourNamespace;

function yourFunction() {
  // do something...
}


// While in the same namespace, call as 
yourFunction();

// From a different namespace, call as
YourNamespace\yourFunction();
票数 3
EN

Stack Overflow用户

发布于 2011-08-10 10:00:44

PHP Namespaces是用来归档完全相同的目标的:

代码语言:javascript
复制
<?php // foo.php
namespace Foo;
function bar() {}
class baz {
    static $qux;
}
?>

在使用调用命名空间函数时,如下所示:

代码语言:javascript
复制
<?php //bar.php
include 'foo.php';
Foo\bar();
Foo\baz::$qux = 1;
?>
票数 2
EN

Stack Overflow用户

发布于 2022-02-14 00:40:19

这是一种封装

代码语言:javascript
复制
<?php

$abc = 'ABC';
$def = 'DEF';

(function () use ($abc, $def){
$xyz = 'XYZ';

echo $abc; // works
echo $xyz; // works
})();

echo $abc; // works
echo $xyz; // warning: undefined
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7005064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档