假设你在类中定义了一个常量:
class Foo {
const ERR_SOME_CONST = 6001;
function bar() {
$x = 6001;
// need to get 'ERR_SOME_CONST'
}
}
Run Code Online (Sandbox Code Playgroud)
用PHP可以吗?
如果你有一个工厂类来创建某种新的对象,那个factroy类是一个单例,如下所示:
class Database_Factory extends Base_Factory {
private static $factory;
private $objects = array();
public function __get($profile) {
// check for object and return it if it's created before
}
public static function getInstance(){
if (!self::$factory)
self::$factory = new self();
return self::$factory;
}
}
Run Code Online (Sandbox Code Playgroud)
当某个对象需要它自己的工厂时,相同的代码会重复.所以我决定将这个工厂类抽象化,并且只为每个工厂实现特定的例程.但PHP不允许实例化抽象类.
abstract class Base_Factory {
public static function getInstance(){
if (!self::$factory)
self::$factory = new self();
return self::$factory;
}
}
Run Code Online (Sandbox Code Playgroud)
致命错误:无法实例化抽象类Base_Factory
你会怎么做?
你有一个完全适合作为抽象的类,但如果没有派生类提供的数据,这个类就无法正常工作.将所有数据传递给构造函数并不方便,因为并非所有数据都可能需要,并且其中许多可以是动态的(来自子函数).
构成这种结构的最佳实践是什么?或者首先是一个糟糕的设计?
我有画廊,用户可以提交Youtube链接到视频和服务器自动从Youtube提取缩略图.但是,许多视频在图像的顶部和底部都包含黑条.我知道黑条的起源,但是当我将缩略图调整为正方形时,黑条会干扰设计.
我试图从上到下分析像素颜色,直到找不到黑色(imagecolorat()),但它仍然留下一些近黑色,所以小条仍然驻留在图像中.
什么可以更有效的algorythm检查?
我是PHP DOM对象的新手,有一个问题,我找不到解决方案.我有一个带有以下HTML的DOMDocument:
<div id="header">
</div>
<div id="content">
<div id="sidebar">
</div>
<div id="info">
</div>
</div>
<div id="footer">
</div>
Run Code Online (Sandbox Code Playgroud)
我需要获取第一级的所有节点(标题,内容,页脚).hasChildNodes()不起作用,因为第一级节点可能没有子节点(页眉,页脚).现在我的代码看起来像:
$dom = new DOMDocument();
$dom -> preserveWhiteSpace = false;
$dom -> loadHTML($html);
$childs = $dom -> getElementsByTagName('div');
Run Code Online (Sandbox Code Playgroud)
但这让我得到了所有的div.任何建议?
我正在为一个项目构建某种迷你框架,并提出这个解决方案.我尝试了很多,但在我看来这非常方便(代码简化为了简化):
# Basically it's just a Registry pattern
class Repository {
private static $objects = array();
public function loadObject($alias, $object) {
self :: $objects[$alias] = $object;
return true;
}
public function __get($name) {
if ($this->objectExists($name)) {
return self::$objects[$name];
} else {
return false;
}
}
}
class Database extends Repository {
/* database class */
}
class Session extends Repository {
public function some_func($key, $value) {
/* i can access database object using $this in any class that extends Repository …
Run Code Online (Sandbox Code Playgroud) php ×6
class ×2
class-design ×1
constants ×1
dom ×1
frameworks ×1
singleton ×1
theory ×1
thumbnails ×1
youtube ×1