Heim > Backend-Entwicklung > PHP-Tutorial > php文件名和类名相同时include不起作用?

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

WBOY
Freigeben: 2016-07-06 13:53:35
Original
1275 Leute haben es durchsucht

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

<code><?php class ValidationCode{
        private $width;
        private $height;
        private $num_chars;
        private $image;
        const BORDER = 1;

        function __construct($width=60,$height=20,$num_chars=4){
            $this->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>
Nach dem Login kopieren
Nach dem Login kopieren

code.php

<code><?php require_once("validate.php");
    $code = new ValidationCode();
    //echo $code->createChar();
    $code->showImage();
  ?></code>
Nach dem Login kopieren
Nach dem Login kopieren

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

回复内容:

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

<code><?php class ValidationCode{
        private $width;
        private $height;
        private $num_chars;
        private $image;
        const BORDER = 1;

        function __construct($width=60,$height=20,$num_chars=4){
            $this->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>
Nach dem Login kopieren
Nach dem Login kopieren

code.php

<code><?php require_once("validate.php");
    $code = new ValidationCode();
    //echo $code->createChar();
    $code->showImage();
  ?></code>
Nach dem Login kopieren
Nach dem Login kopieren

测试:入口代码

<code><?php require_once("ValidationCode.php");//include_once("ValidationCode.php");
$code = new ValidationCode();
//echo $code->createChar();
$code->showImage();</code>
Nach dem Login kopieren

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

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

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

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

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage