How to use my custom Symfony 3.0 Library/Bundle/HowIsCalled

Viewed 266

By looking these piece of documentation:

I have made this Library:

<?php
namespace Acme\HelloBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\DependencyInjection\ConfigurableExtension;

class Image extends ConfigurableExtension
{
    /*The size of the thumbnail*/
    private $thumb_max_width=100;
    private $thumb_max_height=100;
    /*End of: "The size of the thumbnail"*/

    private $image_width=0;
    private $image_height=0;

    /**
    *Contains the Image Data
    */
    private $image=null;

    protected function setThumbHeight($value)
    {
      $thumb_max_height=$value>0?$value:0;
    }

    protected function setThumbWidth($value)
    {
      $thumb_max_width=$value>0?$value:0;
    }

    /**
    *Function that Loads the configuration
    */
    protected function loadInternal(array $mergedConfig, ContainerBuilder $container)
    {
        var_dump($mergedConfig);
    }

    /**
    *Loads a $file from $extention
    *@param $file {String} The path of file
    *@param $extention {String} the type or the extention of the image
    *
    *@return This Object Instance
    */
    public function load($file)
    {

      $extention= exif_imagetype($file);

      switch($extention)
      {
        case IMAGETYPE_PNG:
          $this->image=imagecreatefrompng($file);
          break;

        case IMAGETYPE_JPEG:
          $this->image=imagecreatefromjpeg($file);
          break;

        case IMAGETYPE_GIF:
          $this->image=imagecreatefromgif($file);
          break;
      }

      $this->image_width=imagesx($this->image);
      $this->image_height=imagesy($this->image);
      return $this;
    }

    /**
    * Resizes an Image
    * @param $width {Int} The new images width
    * @param $height {Int} The new Images Height
    *
    * @return The Object Instance
    */
    public function resize($width,$height)
    {
      $new_image=imagecreatetruecolor($width,$height);
      imagecopyresampled($new_image,$this->image, 0, 0, 0, 0,$width,$height);

      /*Set the new data to the Image*/
      imagedestroy($this->image);
      $this->image=$new_image;
      /*End of: "Set the new data to the Image"*/

      return $this;
    }

    /**
    *Generates a thumbnail of the image
    *The thumbnail size is retrieved from configuration
    *
    * @return The Object Instance
    */
    public function to_thumb()
    {
      $width=0;
      $width=0;

      /*Determine the resize width and height*/
      $source_aspect_ratio = $this->image_width / $this->image_height;
      $thumbnail_aspect_ratio = $this->thumb_max_width / $this->thumb_max_height;

      if ($this->image_width <= $this->thumb_max_width && $this->image_height <= $this->thumb_max_height)
      {
        $width = $this->image_width;
        $height = $this->image_height;
      }
      elseif ($thumbnail_aspect_ratio > $source_aspect_ratio)
      {
        $width = (int) ($this->thumb_max_height * $source_aspect_ratio);
        $height = $this->thumb_max_height;
      }
      else
      {
        $width = $this->thumb_max_width;
        $height = (int) ($this->thumb_max_width / $source_aspect_ratio);
      }
      /*End of: "Determine the resize width and height"*/

      $this->resize($width,$width);

      return $this;
    }

    /**
    *Exports the image to a file
    *@param file {String} The file path
    */
    public function export($file)
    {
      $ext = pathinfo($file, PATHINFO_EXTENSION);
      $ext=strtolower($ext);

      $write=false;

      switch($ext)
      {
        case 'png':
          imagesavealpha($this->image,true);
          $write=imagepng($this->image,$file);
        case 'jpeg':
        case 'jpg':
          $write=imagejpeg($this->image,$file);
        case 'gif':
          $write=imagegif($this->image,$file);
      }
      imagedestroy($this->image);
    }
}
?>

The library above is located in src/AppBundle/ImageBundle/DependencyInjection/Image.php. And I want to be able to load it either in an Entity (on a Doctrine hook) or in a Controller. But I have no idea how to do it.

1 Answers
Related