小编Den*_*ovs的帖子

如何获得常数的名称?

假设你在类中定义了一个常量:

class Foo {
    const ERR_SOME_CONST = 6001;

    function bar() {
        $x = 6001;
        // need to get 'ERR_SOME_CONST'
    }
}
Run Code Online (Sandbox Code Playgroud)

用PHP可以吗?

php class constants

49
推荐指数
6
解决办法
4万
查看次数

扩展抽象单例类

如果你有一个工厂类来创建某种新的对象,那个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

你会怎么做?

php singleton abstract-class

20
推荐指数
2
解决办法
1万
查看次数

完成抽象类的常见做法是什么?

你有一个完全适合作为抽象的类,但如果没有派生类提供的数据,这个类就无法正常工作.将所有数据传递给构造函数并不方便,因为并非所有数据都可能需要,并且其中许多可以是动态的(来自子函数).

构成这种结构的最佳实践是什么?或者首先是一个糟糕的设计?

  1. 声明孩子必须实现的抽象函数?
  2. 声明在子类中重写的普通函数?

php theory abstract-class class-design class

5
推荐指数
1
解决办法
143
查看次数

删除视频缩略图中的黑条

我有画廊,用户可以提交Youtube链接到视频和服务器自动从Youtube提取缩略图.但是,许多视频在图像的顶部和底部都包含黑条.我知道黑条的起源,但是当我将缩略图调整为正方形时,黑条会干扰设计.

我试图从上到下分析像素颜色,直到找不到黑色(imagecolorat()),但它仍然留下一些近黑色,所以小条仍然驻留在图像中.

什么可以更有效的algorythm检查?

php youtube thumbnails

3
推荐指数
1
解决办法
5410
查看次数

如何使用PHP DOMDocument获取第一级节点?

我是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.任何建议?

php dom

1
推荐指数
1
解决办法
4056
查看次数

关于框架设计的建议

我正在为一个项目构建某种迷你框架,并提出这个解决方案.我尝试了很多,但在我看来这非常方便(代码简化为了简化):

# 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 frameworks design-patterns

1
推荐指数
1
解决办法
224
查看次数