尝试返回新对象代替原始引用对象破坏原始引用

时间:2015-05-22 21:41:52

标签: php

我正在努力写下我期待的内容,因此我将展示代码和预期的输出。

@Override
public void render () {

    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    Gdx.gl.glEnable(GL20.GL_TEXTURE_2D);
    texture.bind();

    shader.begin();

    shader.setUniformMatrix("u_worldView", viewport.getCamera().combined);
    shader.setUniformi("u_texture", 0);

    mesh.render(shader, GL20.GL_TRIANGLES);

    shader.end();       

}

修改 好的,我编辑了someOtherFunction的调用,以更好地反映我的实时代码。使用call_user_func_array调用它会产生此错误。

警告:参数1到B :: someOtherFunction()应该是参考,给定值

2 个答案:

答案 0 :(得分:1)

通过引用传递参数:

function someOtherFunction(&$object) {

答案 1 :(得分:0)

我对解决方案并不完全满意,但它在我的情况下工作。我理解这个解决方案可能会导致受保护和私有属性的方案出现问题。但我唯一的另一种选择是为一个参考问题修改整个框架。

    function someOtherFunction($object) {

        $a = new A();
        $this->someFunction($a);

        // Expected
        var_dump($a->someProp); // Some Value

        // PROBLEM LIES HERE
        // I am trying to set the referenced original object to the altered new object
        // I'm guessing this line breaks the original reference, so how can I avoid that?
        //$object = clone $a;

        // Copy each property manually
        foreach(get_object_vars($a) as $key => $value) {
            $object->$key = $value;
        }
    }