欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php文件名和类名相同时include不起作用?

程序员文章站 2022-04-30 10:37:29
...
文件名:原来为ValidationCode.php
修改为validate.php后可以正常显示验证码,
浏览器中请求code.php文件中进行显示验证码
width = $width;
            $this->height = $height;
            $this->num_chars = $num_chars;
        }
        
        function showImage(){
            $this->createImage();
            $this->drawBorder();
            $this->drawChars();
            $this->outPic();
        }
        
        //create canvas
         function createImage(){
            $this->image = imagecreate($this->width,$this->height);
            //$rand_color = imagecolorallocate($this->image,rand(0,255),rand(0,255),rand(0,255));
            $back = imagecolorallocate($this->image,0,0,0);
            $border = imagecolorallocate($this->image,255,255,255);
            imagefill($this->image,0,0,$back);
            //imagefilledrectangle($thid->image,self::BORDER,self::BORDER,$this->width-self::BORDER,$this->height-self::BORDER,$border);
            //imageline($this->image,1,1,100,100,$rand_color);
            //$this->outPic();
        }

        //draw border
        private function drawBorder(){
            $outer_bg_color = imagecolorallocate($this->image,0,0,0);
            $inner_bg_color = imagecolorallocate($this->image,255,255,255);
            imagefill($this->image,0,0,$outer_bg_color);
            imagefilledrectangle($this->image,self::BORDER,self::BORDER,$this->width-self::BORDER-1,$this->height-self::BORDER-1,$inner_bg_color);

        }        
    
        //create char content
          function createChar(){
            $rand_ascii="";
            $rand_type = rand(0,2);
            switch($rand_type){
                case 0:
                    $rand_ascii = rand(48,57);  
                   break;
                case 1:
                     $rand_ascii = rand(65,90);
                   break;
                case 2:
                     $rand_ascii = rand(97,122);
                   break;
            }
            $rand_str = sprintf("%c",$rand_ascii);
            return $rand_str;
        }
    
    
    
        //draw char
         private function drawChars(){
            $x = $this->width/$this->num_chars+1;
            $y = $this->height/2;
            for($index = 0; $indexnum_chars; $index++){
                $rand_color = imagecolorallocate($this->image,rand(0,255),rand(0,255),rand(0,255));
                imagechar($this->image,3,$x*$index+2,$y-$y/2,$this->createChar(),$rand_color);
            }
        }

        //out pic
        private function outPic(){
            header("content-type:image/png");
            imagepng($this->image);
        }
        

         function __destruct(){
             imagedestroy($this->image);
         }
    }
    
    /*$code = new ValidationCode();
    //echo $code->createChar();
    $code->showImage();*/
?>

code.php

createChar();
    $code->showImage();
  ?>

这个问题已被关闭,原因:已经自己找到问题原因

回复内容:

文件名:原来为ValidationCode.php
修改为validate.php后可以正常显示验证码,
浏览器中请求code.php文件中进行显示验证码

width = $width;
            $this->height = $height;
            $this->num_chars = $num_chars;
        }
        
        function showImage(){
            $this->createImage();
            $this->drawBorder();
            $this->drawChars();
            $this->outPic();
        }
        
        //create canvas
         function createImage(){
            $this->image = imagecreate($this->width,$this->height);
            //$rand_color = imagecolorallocate($this->image,rand(0,255),rand(0,255),rand(0,255));
            $back = imagecolorallocate($this->image,0,0,0);
            $border = imagecolorallocate($this->image,255,255,255);
            imagefill($this->image,0,0,$back);
            //imagefilledrectangle($thid->image,self::BORDER,self::BORDER,$this->width-self::BORDER,$this->height-self::BORDER,$border);
            //imageline($this->image,1,1,100,100,$rand_color);
            //$this->outPic();
        }

        //draw border
        private function drawBorder(){
            $outer_bg_color = imagecolorallocate($this->image,0,0,0);
            $inner_bg_color = imagecolorallocate($this->image,255,255,255);
            imagefill($this->image,0,0,$outer_bg_color);
            imagefilledrectangle($this->image,self::BORDER,self::BORDER,$this->width-self::BORDER-1,$this->height-self::BORDER-1,$inner_bg_color);

        }        
    
        //create char content
          function createChar(){
            $rand_ascii="";
            $rand_type = rand(0,2);
            switch($rand_type){
                case 0:
                    $rand_ascii = rand(48,57);  
                   break;
                case 1:
                     $rand_ascii = rand(65,90);
                   break;
                case 2:
                     $rand_ascii = rand(97,122);
                   break;
            }
            $rand_str = sprintf("%c",$rand_ascii);
            return $rand_str;
        }
    
    
    
        //draw char
         private function drawChars(){
            $x = $this->width/$this->num_chars+1;
            $y = $this->height/2;
            for($index = 0; $indexnum_chars; $index++){
                $rand_color = imagecolorallocate($this->image,rand(0,255),rand(0,255),rand(0,255));
                imagechar($this->image,3,$x*$index+2,$y-$y/2,$this->createChar(),$rand_color);
            }
        }

        //out pic
        private function outPic(){
            header("content-type:image/png");
            imagepng($this->image);
        }
        

         function __destruct(){
             imagedestroy($this->image);
         }
    }
    
    /*$code = new ValidationCode();
    //echo $code->createChar();
    $code->showImage();*/
?>

code.php

createChar();
    $code->showImage();
  ?>

测试:入口代码

createChar();
$code->showImage();

文件名:php文件名和类名相同时include不起作用?

测试结果:
php文件名和类名相同时include不起作用?

结论:include的时候文件名跟类名没有关系。结果是可以的。我不知道你的为什么不可以。但是我测了是可以的。

真的假的啊!文件名和类名一样引用不起作用,这么神奇!有没有出什么错误提示

相关标签: php