찾다
백엔드 개발PHP 튜토리얼이미지 자르기, 회전, 선명하게 하기, 색상 감소 또는 특수 효과 추가를 구현하는 php_imagick 방법_php 기술

이 기사의 예에서는 이미지 자르기, 회전, 선명하게 하기, 색상 감소 또는 특수 효과 추가를 구현하는 php_imagick의 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

PHP가 ImageMagick 함수를 호출할 수 있게 해주는 PHP 확장입니다. 이 확장을 사용하면 PHP가 ImageMagick과 동일한 기능을 가질 수 있습니다.

ImageMagick은 인기 있는 TIFF, JPEG, GIF, PNG, PDF, PhotoCD 및 기타 형식을 포함하여 185개 이상의 기본 형식으로 된 이미지 파일을 읽고, 쓰고, 처리하는 데 사용할 수 있는 강력하고 안정적인 무료 도구 세트 및 개발 패키지입니다. . ImageMagick을 사용하면 웹 애플리케이션의 필요에 따라 이미지를 동적으로 생성할 수 있으며, 크기를 변경하고, 회전하고, 선명하게 하고, 색상을 줄이고, 이미지(또는 이미지 그룹)에 특수 효과를 추가하고 결과를 저장할 수도 있습니다. 같은 형식으로 저장하거나 다른 형식으로 저장하세요.

php_imagick은 PHP 이미지 처리용 확장 패키지로, 크기 변경, 회전, 선명하게 하기, 색상 빼기, 이미지에 특수 효과 추가 등의 작업을 완료할 수 있습니다.

1. Windows에 Imagick 확장 프로그램을 설치합니다.

1. ImageMagick을 다운로드하고 설치합니다

http://image_magick.veidrodis.com/image_magick/binaries/ImageMagick-6.6.2-10-Q16-windows-dll.exe

2. php_imagick.dll 다운로드

http://valokuva.org/outside-blog-content/imagick-windows-builds/php53/imagick-2.3.0-dev/vc9_nts/php_imagick.dll

스레드 안전 PHP를 사용하는 경우 다운로드하세요

http://valokuva.org/outside-blog-content/imagick-windows-builds/php53/imagick-2.3.0-dev/vc9_zts/php_imagick.dll

3. 설정

php.ini에

추가

확장자=php_imagick.dll, 웹 서버 다시 시작

2. Linux에 Imagick 확장 프로그램 설치:

1.yum ImageMagick 설치

yum ImageMagick ImageMagick-devel 설치

2. 설치 성공 여부 테스트

변환 버전

3. imagick 확장 프로그램 설치

01.wget http://pecl.php.net/get/imagick-3.1.0RC2.tgz02.tar xzvf imagick-3.1.0RC2.tgz03.cd imagick-3.1.0RC204.phpize05../configure06.make07.make 설치

4. php.ini 파일을 편집하고 파일 끝에 다음 코드를 추가합니다

확장자=imagick.so

5.아파치 서버 다시 시작

서비스 httpd 재시작

3. 사례

1. 국경 처리

코드 복사 코드는 다음과 같습니다.
header('Content-type: image/jpeg')
$image = new Imagick('test.jpg')
$color=new ImagickPixel()
$color->setColor("rgb(220,220,220)")
$image->borderImage($color,5,4)
$image->blurImage(5,5,imagick::CHANNEL_GREEN)
echo $image;

먼저 간단한 예를 살펴보겠습니다

php_imagick 프로그램 예

1. 썸네일을 생성하고 표시합니다

코드 복사 코드는 다음과 같습니다.
header('콘텐츠 유형: 이미지/jpeg')
$image = new Imagick('image.jpg')
// 너비나 높이 매개변수로 0을 제공하면 // 가로세로 비율이 유지됩니다.
$이미지->thumbnailImage(100, 0)
$이미지를 에코
?>

2. 디렉토리에 썸네일을 생성하고 저장합니다
코드 복사 코드는 다음과 같습니다.
$images = new Imagick(glob('images/*.JPG'))
foreach($이미지를 $이미지로) {
// 가로 세로 비율을 유지하기 위해 0 강제로 축소판 이미지 제공
$이미지->thumbnailImage(1024,0)
}
$이미지->writeImages()
?>

3. 썸네일 GIF 애니메이션 사진
코드 복사 코드는 다음과 같습니다.
/* 새로운 imagick 객체를 생성하고 GIF로 읽습니다 */
$im = new Imagick("example.gif")
/* 모든 프레임 크기 조정 */
foreach($im을 $frame으로) {
/* 50x50 프레임 */
$frame->thumbnailImage(50, 50)
/* 가상 캔버스를 올바른 크기로 설정 */
$프레임->setImagePage(50, 50, 0, 0)
}/* writeImage 대신 writeImages에 주목하세요 */
$im->writeImages("example_small.gif", true)
?>

이제 본론으로 들어가겠습니다.

예:

썸네일 자르기/생성/워터마크 추가, GIF 자동 감지 및 처리

통화 방법:

코드 복사 코드는 다음과 같습니다.
'imagick.class.php'를 포함합니다. 
$이미지 = 새로운 lib_image_imagick(); 
$image->open('a.gif'); 
$image->resize_to(100, 100, 'scale_fill'); 
$image->add_text('1024i.com', 10, 20); 
$image->add_watermark('1024i.gif', 10, 50); 
$image->save_to('x.gif');
imagick.class.php

클래스 lib_image_imagick

 개인 $이미지 = null; 
 개인 $ 유형 = null; 
 // 构造函数 
 공개 함수 __construct(){} 
 
 // 析构函数 
 공개 함수 __destruct()
 { 
     if($this->image!==null) $this->image->destroy();  
 } 
 // 载入图이미지 
 공개 함수 열기($path)
 { 
  $this->image = 새로운 Imagick( $path ); 
  if($this->image)
  { 
      $this->type = strtolower($this->image->getImageFormat()); 
  } 
  $this->이미지를 반환합니다. 
 } 
  
 공개 함수 자르기($x=0, $y=0, $width=null, $height=null)
 { 
     if($width==null) $width = $this->이미지->getImageWidth()-$x; 
     if($height==null) $height = $this->image->getImageHeight()-$y; 
     if($width       
     if($this->type=='gif') 
     { 
            $이미지 = $this->이미지; 
         $canvas = 새로운 Imagick(); 
          
         $이미지 = $이미지->coalesceImages(); 
         foreach($이미지를 $프레임으로){ 
             $img = 새로운 Imagick(); 
             $img->readImageBlob($frame); 
                $img->cropImage($width, $height, $x, $y); 
                $canvas->addImage( $img ); 
                $canvas->setImageDelay( $img->getImageDelay() ); 
                $canvas->setImagePage($width, $height, 0, 0); 
            } 
             
            $image->destroy(); 
         $this->이미지 = $canvas; 
     } 
     그렇지 않으면
     { 
         $this->이미지->cropImage($width, $height, $x, $y); 
     } 
 } 
 /*
 * 更改图이미지대소 
 $fit: 适应大小方式 
 'force': 把图文强建变shape成 $width X $height 큼직한
 '크기': 按比例在安全框 $width X $height 内缩放图picture, 输流缩放后图image大小 不完全等于 $width X $height 
 'scale_fill': 按比例可设置背景填充color $bg_color = array(255,25) 5,255)(红,绿,蓝, 透명도) 透명도(0不透명-127完全透명)) 
 其它: 智能模能 缩放图image并载取图이미지적中间부분분 $width X $height image素大小 
 $fit = 'force','scale','scale_fill' 时: 输 Out完整图image 
 $fit = 图image方位值 时, 输 Out指定位置part分图image  
 字母与图image的对应关系如下: 
  
 북서쪽   북쪽   북동쪽 
  
 서쪽         중앙        동쪽 
  
 남서쪽   남쪽   남동쪽 
  
 */
 공개 함수 resize_to($width = 100, $height = 100, $fit = 'center', $fill_color = array(255,255,255,0) ) 
 { 
      
     스위치($fit)
     { 
         'force'의 경우: 
             if($this->type=='gif') 
             { 
                 $이미지 = $this->이미지; 
                 $canvas = 새로운 Imagick(); 
                  
                 $이미지 = $이미지->coalesceImages(); 
                 foreach($이미지를 $프레임으로){ 
                     $img = 새로운 Imagick(); 
                     $img->readImageBlob($frame); 
                        $img->thumbnailImage( $width, $height, false ); 
                        $canvas->addImage( $img ); 
                        $canvas->setImageDelay( $img->getImageDelay() ); 
                    } 
                    $image->destroy(); 
                 $this->이미지 = $canvas; 
             } 
             그렇지 않으면
             { 
                 $this->이미지->thumbnailImage( $width, $height, false ); 
             } 
             부서지다; 
         사례 '규모': 
             if($this->type=='gif') 
             { 
                 $이미지 = $this->이미지; 
                 $이미지 = $이미지->coalesceImages(); 
                 $canvas = 새로운 Imagick(); 
                 foreach($이미지를 $프레임으로){ 
                     $img = 새로운 Imagick(); 
                     $img->readImageBlob($frame); 
                        $img->thumbnailImage( $width, $height, true ); 
                        $canvas->addImage( $img ); 
                        $canvas->setImageDelay( $img->getImageDelay() ); 
                    } 
                    $image->destroy(); 
                 $this->이미지 = $canvas; 
             } 
             그렇지 않으면
             { 
                 $this->이미지->thumbnailImage( $width, $height, true ); 
             } 
             부서지다; 
         케이스 'scale_fill': 
             $size = $this->이미지->getImagePage();  
             $src_width = $size['너비']; 
             $src_height = $size['높이']; 
              
                $x = 0; 
                $y = 0; 
                 
                $dst_width = $폭; 
                $dst_height = $높이; 
    if($src_width*$height > $src_height*$width)
    { 
     $dst_height = intval($width*$src_height/$src_width); 
     $y = intval( ($height-$dst_height)/2 ); 
    } 
    그렇지 않으면
    { 
     $dst_width = intval($height*$src_width/$src_height); 
     $x = intval( ($width-$dst_width)/2 ); 
    } 
                $이미지 = $this->이미지; 
                $canvas = 새로운 Imagick(); 
                 
                $color = 'rgba('.$fill_color[0].','.$fill_color[1].','.$fill_color[2].','.$fill_color[3].')'; 
             if($this->type=='gif') 
             { 
                 $이미지 = $이미지->coalesceImages(); 
                 foreach($images as $frame)
                 { 
                     $frame->thumbnailImage( $width, $height, true ); 
                     $draw = 새로운 ImagickDraw(); 
                        $draw->composite($frame->getImageCompose(), $x, $y, $dst_width, $dst_height, $frame); 
                        $img = 새로운 Imagick(); 
                        $img->newImage($width, $height, $color, 'gif'); 
                        $img->drawImage($draw); 
                        $canvas->addImage( $img ); 
                        $canvas->setImageDelay( $img->getImageDelay() ); 
                        $canvas->setImagePage($width, $height, 0, 0); 
                    } 
             } 
             그렇지 않으면
             { 
                 $image->thumbnailImage( $width, $height, true ); 
                  
                 $draw = 새로운 ImagickDraw(); 
                    $draw->composite($image->getImageCompose(), $x, $y, $dst_width, $dst_height, $image); 
                     
                 $canvas->newImage($width, $height, $color, $this->get_type() ); 
                    $canvas->drawImage($draw); 
                    $canvas->setImagePage($width, $height, 0, 0); 
             } 
             $image->destroy(); 
             $this->이미지 = $canvas; 
             부서지다; 
   기본값: 
    $size = $this->이미지->getImagePage();  
       $src_width = $size['너비']; 
             $src_height = $size['높이']; 
              
                $crop_x = 0; 
                $crop_y = 0; 
                 
                $crop_w = $src_width; 
                $crop_h = $src_height; 
                 
          if($src_width*$height > $src_height*$width)
    { 
     $crop_w = intval($src_height*$width/$height); 
    } 
    그렇지 않으면
    { 
        $crop_h = intval($src_width*$height/$width); 
    } 
                 
       스위치($fit)
             { 
        사례 'north_west': 
            $crop_x = 0; 
            $crop_y = 0; 
            부서지다; 
           '북쪽'의 경우: 
               $crop_x = intval( ($src_width-$crop_w)/2 ); 
               $crop_y = 0; 
               부서지다; 
           사례 'north_east': 
               $crop_x = $src_width-$crop_w; 
               $crop_y = 0; 
               부서지다; 
           'west'의 경우: 
               $crop_x = 0; 
               $crop_y = intval( ($src_height-$crop_h)/2 ); 
               부서지다; 
           사례 'center': 
               $crop_x = intval( ($src_width-$crop_w)/2 ); 
               $crop_y = intval( ($src_height-$crop_h)/2 ); 
               부서지다; 
           '동쪽'의 경우: 
               $crop_x = $src_width-$crop_w; 
               $crop_y = intval( ($src_height-$crop_h)/2 ); 
               부서지다; 
           사례 'south_west': 
               $crop_x = 0; 
               $crop_y = $src_height-$crop_h; 
               부서지다; 
           '남쪽'의 경우: 
               $crop_x = intval( ($src_width-$crop_w)/2 ); 
               $crop_y = $src_height-$crop_h; 
               부서지다; 
           사례 'south_east': 
               $crop_x = $src_width-$crop_w; 
               $crop_y = $src_height-$crop_h; 
               부서지다; 
           기본값: 
               $crop_x = intval( ($src_width-$crop_w)/2 ); 
               $crop_y = intval( ($src_height-$crop_h)/2 ); 
             } 
              
             $이미지 = $this->이미지; 
             $canvas = 새로운 Imagick(); 
              
          if($this->type=='gif') 
             { 
                 $이미지 = $이미지->coalesceImages(); 
                 foreach($이미지를 $프레임으로){ 
                     $img = 새로운 Imagick(); 
                     $img->readImageBlob($frame); 
                        $img->cropImage($crop_w, $crop_h, $crop_x, $crop_y); 
                        $img->thumbnailImage( $width, $height, true ); 
                         
                        $canvas->addImage( $img ); 
                        $canvas->setImageDelay( $img->getImageDelay() ); 
                        $canvas->setImagePage($width, $height, 0, 0); 
                    } 
             } 
             그렇지 않으면
             { 
                 $image->cropImage($crop_w, $crop_h, $crop_x, $crop_y); 
                 $image->thumbnailImage( $width, $height, true ); 
                 $canvas->addImage( $image ); 
                 $canvas->setImagePage($width, $height, 0, 0); 
             } 
             $image->destroy(); 
             $this->이미지 = $canvas; 
     } 
      
 } 
  
 // 添加water印图이미지 
 공개 함수 add_watermark($path, $x = 0, $y = 0)
 { 
        $watermark = 새로운 Imagick($path); 
        $draw = 새로운 ImagickDraw(); 
        $draw->composite($watermark->getImageCompose(), $x, $y, $watermark->getImageWidth(), $watermark->getimageheight(), $watermark); 
     if($this->type=='gif') 
     { 
         $이미지 = $this->이미지; 
            $canvas = 새로운 Imagick(); 
         $이미지 = $이미지->coalesceImages(); 
         foreach($image를 $frame으로) 
         { 
                $img = 새로운 Imagick(); 
             $img->readImageBlob($frame); 
                $img->drawImage($draw); 
                 
                $canvas->addImage( $img ); 
                $canvas->setImageDelay( $img->getImageDelay() ); 
            } 
            $image->destroy(); 
         $this->이미지 = $canvas; 
     } 
     그렇지 않으면
     { 
         $this->이미지->drawImage($draw); 
     } 
 } 
  
 // 添加水印文字
 공개 함수 add_text($text, $x = 0 , $y = 0, $angle=0, $style=array())
 { 
        $draw = 새로운 ImagickDraw(); 
        if(isset($style['font'])) $draw->setFont($style['font']); 
        if(isset($style['font_size'])) $draw->setFontSize($style['font_size']); 
     if(isset($style['fill_color'])) $draw->setFillColor($style['fill_color']); 
     if(isset($style['under_color'])) $draw->setTextUnderColor($style['under_color']); 
      
     if($this->type=='gif') 
     { 
         foreach($this->image as $frame)
         { 
             $frame->annotateImage($draw, $x, $y, $angle, $text); 
         } 
     } 
     그렇지 않으면
     { 
         $this->이미지->annotateImage($draw, $x, $y, $angle, $text); 
     } 
 } 
  
 // 保存到指定路径 
 공개 함수 save_to( $path )
 { 
     if($this->type=='gif') 
     { 
         $this->이미지->writeImages($path, true); 
     } 
     그렇지 않으면
     { 
         $this->이미지->writeImage($path); 
     } 
 } 
 // 출동상 
 공개 함수 출력($header = true)
 { 
     if($header) header('콘텐츠 유형: '.$this->type); 
     echo $this->image->getImagesBlob();   
 } 
  
 공개 함수 get_width()
 { 
        $size = $this->이미지->getImagePage();  
        $size['너비']를 반환합니다. 
 } 
  
 공개 함수 get_height()
 { 
     $size = $this->이미지->getImagePage();  
        $size['높이']를 반환합니다. 
 } 
 // 设置图image类型, 默认与源类型一致 
 공개 함수 set_type( $type='png' )
 { 
     $this->유형 = $유형; 
        $this->이미지->setImageFormat( $type ); 
 } 
 // 获取源图image类型 
 공개 함수 get_type()
 { 
  $this->유형을 반환합니다. 
 } 
 
 // 当前对象是否为图文 
 공개 함수 is_image()
 { 
  if( $this->image ) 
   사실을 반환; 
  그렇지 않으면
   거짓을 반환; 
 } 
 
 공개 함수 축소판($width = 100, $height = 100, $fit = true){ $this->image->thumbnailImage( $width, $height, $fit );} // 生成缩略图 $fit为真时将保持比例并在security框 $width X $height 内生成缩略图picture 
 /*
 添加一个边框
 $width: 左右边框宽degree 
 $height: 上下边框宽degree 
$color: Color: RGB 색상 'rgb(255,0,0)' 또는 16진수 색상 '#FF0000' 또는 색상 단어 'white'/'red'...
*/
공용 함수 border($width, $height, $color='rgb(220, 220, 220)')
{
$color=new ImagickPixel()
$color->setColor($color)
$this->이미지->borderImage($color, $width, $height)
}

공용 함수 Blur($radius, $sigma){$this->image->blurImage($radius, $sigma);} // 블러
공개 함수 gaussian_blur($radius, $sigma){$this->image->gaussianBlurImage($radius, $sigma);} // 가우스 블러
공개 함수 Motion_blur($radius, $sigma, $angle){$this->image->motionBlurImage($radius, $sigma, $angle);} // 모션 블러
public function Radial_blur($radius){$this->image->radialBlurImage($radius);} // 방사형 블러
public function add_noise($type=null){$this->image->addNoiseImage($type==null?imagick::NOISE_IMPULSE:$type);} // 노이즈 추가

public function level($black_point, $gamma, $white_point){$this->image->levelImage($black_point, $gamma, $white_point);} // 색상 레벨 조정
public function modulate($brightness, $saturation, $hue){$this->image->modulateImage($brightness, $saturation, $hue);} // 밝기, 채도, 색조 조정
public function Charcoal($radius, $sigma){$this->image->charcoalImage($radius, $sigma);} // 스케치
public function oil_paint($radius){$this->image->oilPaintImage($radius);} // 유화 효과

public function flop(){$this->image->flopImage();} // 가로 뒤집기
public function Flip(){$this->image->flipImage();} // 수직 뒤집기
}

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP의 현재 상태 : 웹 개발 동향을 살펴보십시오PHP의 현재 상태 : 웹 개발 동향을 살펴보십시오Apr 13, 2025 am 12:20 AM

PHP는 현대 웹 개발, 특히 컨텐츠 관리 및 전자 상거래 플랫폼에서 중요합니다. 1) PHP는 Laravel 및 Symfony와 같은 풍부한 생태계와 강력한 프레임 워크 지원을 가지고 있습니다. 2) Opcache 및 Nginx를 통해 성능 최적화를 달성 할 수 있습니다. 3) PHP8.0은 성능을 향상시키기 위해 JIT 컴파일러를 소개합니다. 4) 클라우드 네이티브 애플리케이션은 Docker 및 Kubernetes를 통해 배포되어 유연성과 확장 성을 향상시킵니다.

PHP 대 기타 언어 : 비교PHP 대 기타 언어 : 비교Apr 13, 2025 am 12:19 AM

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

PHP vs. Python : 핵심 기능 및 기능PHP vs. Python : 핵심 기능 및 기능Apr 13, 2025 am 12:16 AM

PHP와 Python은 각각 고유 한 장점이 있으며 다양한 시나리오에 적합합니다. 1.PHP는 웹 개발에 적합하며 내장 웹 서버 및 풍부한 기능 라이브러리를 제공합니다. 2. Python은 간결한 구문과 강력한 표준 라이브러리가있는 데이터 과학 및 기계 학습에 적합합니다. 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

PHP : 웹 개발의 핵심 언어PHP : 웹 개발의 핵심 언어Apr 13, 2025 am 12:08 AM

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 ​​있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP : 많은 웹 사이트의 기초PHP : 많은 웹 사이트의 기초Apr 13, 2025 am 12:07 AM

PHP가 많은 웹 사이트에서 선호되는 기술 스택 인 이유에는 사용 편의성, 강력한 커뮤니티 지원 및 광범위한 사용이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 거대한 개발자 커뮤니티와 풍부한 자원이 있습니다. 3) WordPress, Drupal 및 기타 플랫폼에서 널리 사용됩니다. 4) 웹 서버와 밀접하게 통합하여 개발 배포를 단순화합니다.

과대 광고 : 오늘 PHP의 역할을 평가합니다과대 광고 : 오늘 PHP의 역할을 평가합니다Apr 12, 2025 am 12:17 AM

PHP는 현대적인 프로그래밍, 특히 웹 개발 분야에서 강력하고 널리 사용되는 도구로 남아 있습니다. 1) PHP는 사용하기 쉽고 데이터베이스와 완벽하게 통합되며 많은 개발자에게 가장 먼저 선택됩니다. 2) 동적 컨텐츠 생성 및 객체 지향 프로그래밍을 지원하여 웹 사이트를 신속하게 작성하고 유지 관리하는 데 적합합니다. 3) 데이터베이스 쿼리를 캐싱하고 최적화함으로써 PHP의 성능을 향상시킬 수 있으며, 광범위한 커뮤니티와 풍부한 생태계는 오늘날의 기술 스택에 여전히 중요합니다.

PHP의 약한 참고 자료는 무엇이며 언제 유용합니까?PHP의 약한 참고 자료는 무엇이며 언제 유용합니까?Apr 12, 2025 am 12:13 AM

PHP에서는 약한 참조가 약한 회의 클래스를 통해 구현되며 쓰레기 수집가가 물체를 되 찾는 것을 방해하지 않습니다. 약한 참조는 캐싱 시스템 및 이벤트 리스너와 같은 시나리오에 적합합니다. 물체의 생존을 보장 할 수 없으며 쓰레기 수집이 지연 될 수 있음에 주목해야합니다.

PHP의 __invoke 마법 방법을 설명하십시오.PHP의 __invoke 마법 방법을 설명하십시오.Apr 12, 2025 am 12:07 AM

\ _ \ _ 호출 메소드를 사용하면 객체를 함수처럼 호출 할 수 있습니다. 1. 객체를 호출 할 수 있도록 메소드를 호출하는 \ _ \ _ 정의하십시오. 2. $ obj (...) 구문을 사용할 때 PHP는 \ _ \ _ invoke 메소드를 실행합니다. 3. 로깅 및 계산기, 코드 유연성 및 가독성 향상과 같은 시나리오에 적합합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)