بينما تركز مكتبة PHP الخاصة بـ GrabzIt على توفير مكتبة يمكن استخدامها في أي مشروع PHP. في symfony يتم وضع مشاريع PHP معًا بطريقة فريدة تتطلب المزيد من العمل.
تعد Symfony واحدة من أكبر أطر عمل PHP المستخدمة حاليًا ، فهي تسرع تطوير الويب من خلال توفير مجموعة قابلة لإعادة الاستخدام من المكتبات والمكونات. الذي GrabzIt هو الآن جزء منه ، وذلك بفضل Torben Lundsgaard TLAMedia الذي خلق حزمة من GrabzIt ل Symfony. يستخدم هذا البرنامج مفتوح المصدر MIT الترخيص.
للحصول على حزمة GrabzIt ، يجب عليك أولاً تثبيتها مع الملحن.
composer require tlamedia/grabzit-bundle
ثم إضافته إلى النواة الخاصة بك.
public function registerBundles()
{
$bundles = array(
//...
new Tla\GrabzitBundle\TlaGrabzitBundle(),
//…
ترتيب
احصل على API الرئيسية والسرية وإضافتها إلى ملف التكوين الخاص بك مثل ذلك.
# config.yml
tla_grabzit:
key: 'Sign in to view your Application Key'
secret: 'Sign in to view your Application Secret'
تسجل الحزمة العديد من الخدمات التي تُرجع عند استدعاء فئة GrabzIt المناسبة.
كيفية توليد يلتقط
مثال عن كيفية إنشاء صورة مصغرة في Symfony Framework.
namespace App\Service;
use Symfony\Component\DependencyInjection\ContainerInterface as Container;
class ThumbnailGenerator
{
private $container;
public function __construct(Container $container)
{
$this->router = $router;
$this->container = $container;
}
public function generateThumbnail($url)
{
$grabzItHandlerUrl = 'https://www.my-grabzit-thumbnail-site.com/api/thumbmail-ready';
$options = $this->container->get('tla_grabzit.imageoptions');
$options->setBrowserWidth(1024);
$options->setBrowserHeight(768);
$options->setFormat("png");
$options->setWidth(320);
$options->setHeight(240);
$options->setCustomId($domain);
$grabzIt = $this->container->get('tla_grabzit.client');
$grabzIt->URLToImage($url, $options);
$grabzIt->Save($grabzItHandlerUrl);
try {
$grabzIt->URLToImage($url, $options);
$grabzIt->Save($grabzItHandlerUrl);
$result = true;
} catch (\Throwable $t) {
$result = false;
}
return $result;
}
}
كيفية تلقي يلتقط مع معالج
مثال عن كيفية تلقي لقطات من GrabzIt باستخدام معالج في إطار Symfony. بالطبع سوف تحتاج إلى تغيير هذا لتتناسب مع الاحتياجات الخاصة بك.
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ApiController extends Controller
{
public function thumbnailReadyAction(Request $request)
{
$id = urldecode($request->query->get('id'));
$customId = $request->query->get('customid');
$thumbnailFormat = $request->query->get('format');
if ($id && $customId && $thumbnailFormat) {
$grabzItApplicationKey = $this->container->getParameter('tla_grabzit.key');
if (0 === strpos($id, $grabzItApplicationKey)) {
$grabzIt = $this->container->get('tla_grabzit.client');
$result = $grabzIt->GetResult($id);
if ($result) {
$rootPath = $this->get('kernel')->getRootDir() . '/../';
$thumbnailsPath = $rootPath . 'var/thumbnails/';
$fileName = $customId. '.' .$thumbnailFormat;
file_put_contents($thumbnailsPath . $fileName, $result);
} else {
throw $this->createNotFoundException('GrabzIt did not return a file');
}
} else {
throw $this->createNotFoundException('Wrong key - Unauthorized access');
}
} else {
throw $this->createNotFoundException('Missing parameters');
}
return new Response(null, 200);
}
}
وقد تم توسيع هذه المادة المساعدة من مساعدة لهذه الحزمة مفصلة على جيثب.