为什么我的代码无法正常工作?

时间:2016-04-29 04:06:37

标签: php function

我有一个名为MakeAvatar.php的脚本,它根据两个参数生成一个头像(类似于stackoverflow的头像)

  • size (它是头像的大小)
  • hash (形状和颜色的头像将取决于此)

Aslo我有这个文件夹结构:

\out
    MakeAvatar.php
\root
    \classes
        classname.php
    \img
        /* where images (avatars) are saved */

现在,有两种情况:

  • 当我使用MakeAvatar.php功能时它也可以正常工作,输出将是一个保存为.png图片的头像:

classname.php

// these two parameters are changeable and these are just as an example
$size = 100;
$hash  = 'somettext';
require("../out/MakeAvatar.php");

输出:

enter image description here

  • 当我将MakeAvatar.php用于函数时它不起作用,输出将是一个黑色图像(对于每个将要发送的参数都是相同的)

classname.php

class classname{
    function index() {
        // these two parameters are changeable and these are just as an example
        $size = 100;
        $hash  = 'somettext';
        require("../out/MakeAvatar.php");
    }
}

$obj = new classname;
$obj->index();

输出:

enter image description here

它出了什么问题?我该如何解决?为什么当我将MakeAvatar.php变形为函数时,id不能创建正确的头像?

当我将MakeAvatar.php置于函数中时,我得到the errors

1 个答案:

答案 0 :(得分:1)

我已检查MakeAvatar.php文件的代码,似乎问题出现在以下代码中

/* generate sprite for corners and sides */
function getsprite($shape,$R,$G,$B,$rotation) {
    global $spriteZ;

变量$spriteZ在文件的第327行中定义。但是当你在函数中包含文件时,这个变量是而不是创建为全局变量,但这是一个函数内部的变量。查看variable scope手册。

这意味着在getsprite)函数内部,变量$spriteZ具有null值,因为当文件包含在函数内部时,没有这样的全局变量$spriteZ(它是未初始化为全局变量)。这就是函数imagecreatetruecolor()的调用因错误

而失败的原因
  

警告:imagecreatetruecolor():中的图片尺寸无效   第7行的C:\ xampp \ htdocs \ inaccessible \ identicon.php

我建议修改getsprite()getcenter()函数,并将此变量作为参数提供。导致全局变量可能非常混乱。

P.S。代码架构一般不是最优的,但我想这不属于问题的范围。