小编sha*_*qb4的帖子

Three.js更新纹理图像

我正在使用three.js创建一个类似于此的 Minecraft纹理编辑器.我只是试图获得基本的点击和绘画功能,但我似乎无法弄明白.我目前每个立方体的每个面都有纹理,并通过制作具有以下功能的着色器材料来应用它们.

this.createBodyShaderTexture = function(part, update)
{
    sides = ['left', 'right', 'top', 'bottom', 'front', 'back'];
    images = [];
    for (i = 0; i < sides.length; i++)
    {
        images[i] = 'img/'+part+'/'+sides[i]+'.png'; 
    }
    texCube = new THREE.ImageUtils.loadTextureCube(images);
    texCube.magFilter = THREE.NearestFilter;
    texCube.minFilter = THREE.LinearMipMapLinearFilter;
    if (update)
    {
        texCube.needsUpdate = true;
        console.log(texCube);
    }
    return texCube;
}
this.createBodyShaderMaterial = function(part, update)
{

    shader = THREE.ShaderLib['cube'];
    shader.uniforms['tCube'].value = this.createBodyShaderTexture(part, update);
    shader.fragmentShader = document.getElementById("fshader").innerHTML;
    shader.vertexShader = document.getElementById("vshader").innerHTML;

    material = new THREE.ShaderMaterial({fragmentShader: shader.fragmentShader,  vertexShader: shader.vertexShader, uniforms: shader.uniforms}); …
Run Code Online (Sandbox Code Playgroud)

javascript textures three.js

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

PHP pdo实例作为私有静态属性

我正在尝试基于OOP设计我的网站,但我遇到了如何设计数据库连接的麻烦.目前,我正在抽象类Connector中创建一个私有静态PDO对象.显然,任何需要与数据库交互的东西都会扩展这个类.我一直在翻转如何确保脚本中只有一个连接或PDO对象,因为某些页面需要多个扩展Connector的类.许多人似乎为此目的推荐了Singleton模式,但我目前这样做的方式似乎也完成了同样的事情.

这是我目前的代码.

abstract class Connector
{
    private static $dbh;

    public function __construct()
    {
        try
        {
            self::$dbh = new PDO(...);
            self::$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }
        catch(PDOException $e)
        {
            die($e->getMessage());
        }
    }

    public function getDB()
    {
        return self::$dbh;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后任何子类都会像这样使用它.

class Subclass extends Connector
{
    public function interactWithDB()
    {
        $stmt = $this->getDB()->prepare(...);
        // etc...
    }
}
Run Code Online (Sandbox Code Playgroud)

从理论上讲,我认为子类的每个实例都应该始终访问同一个PDO实例.这段代码是否真的有意义,或者我是否以某种方式误解了静态属性?这是不好的设计/实践,还是Singleton有更多的优势?

如果有什么不清楚的话请评论,谢谢!

编辑:

Connector类并不仅仅是为了保存PDO对象而存在.它的析构函数关闭连接(使其为null)并且它包含isValueTaken等函数,它检查数据库中是否已有值.它具有以下抽象功能

abstract function retrieveData();
abstract function setData();
Run Code Online (Sandbox Code Playgroud)

例如,我有一个扩展Connector的User类.它定义了setData()来在数据库中注册用户.我不知道这是否会对回应产生影响.

php database static pdo

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

标签 统计

database ×1

javascript ×1

pdo ×1

php ×1

static ×1

textures ×1

three.js ×1