محدودیت‌ها و تفاوت‌های API

تفاوت‌های API عمومی

این فهرست، با استفاده از قطعات نمونه کد، برخی تفاوت‌ها بین Aspose.Slides for Java و Aspose.Slides for PHP از طریق APIهای جاوا را نشان می‌دهد.

وارد کردن کتابخانه (مقایسه بسته‌ها)

Aspose.Slides for Java

import com.aspose.slides.*;

Aspose.Slides for PHP از طریق جاوا

require_once("Java.inc");
require_once("lib/aspose.slides.php");

use aspose\sldes;
use aspose\sldes\Presentation;

ایجاد یک ارائه جدید

Aspose.Slides for Java

Presentation presentation = new Presentation();

Aspose.Slides for PHP از طریق جاوا

$presentation = new Presentation();

Enums یا Constants

Aspose.Slides for Java

arc2.getLineFormat().setDashStyle(MsoLineDashStyle.SOLID);

Aspose.Slides for PHP از طریق جاوا

$arc2->getLineFormat()->setDashStyle(slides\MsoLineDashStyle::SOLID);

مثال

Aspose.Slides for Java

import com.aspose.slides.ISlide;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import com.aspose.slides.ShapeType;

public class Test
{
    public static void main(String[] args) throws Exception
    {
        // یک شی Presentation ایجاد می‌کند که نمایانگر یک فایل ارائه است
        Presentation pres = new Presentation();
        try
        {
            // اسلاید اول را دریافت می‌کند
            ISlide slide = pres.getSlides().get_Item(0);

            // یک شکل خودکار با نوع خط اضافه می‌کند
            slide.getShapes().addAutoShape(ShapeType.Line, 50, 150, 300, 0);
            pres.save("NewPresentation_out.pptx", SaveFormat.Pptx);
        }
        finally
        {
            if (pres != null) pres.dispose();
        }
    }
}

Aspose.Slides for PHP از طریق جاوا

<?php
require_once("Java.inc");
require_once("lib/aspose.slides.php");

use aspose\slides;
use aspose\slides\Presentation;
use aspose\slides\ShapeType;
use aspose\slides\SaveFormat;

$pres = new Presentation();
try
{
    // اسلاید اول را دریافت می‌کند
    $slide = $pres->getSlides()->get_Item(0);

    // یک شکل خودکار با نوع خط اضافه می‌کند
    $slide->getShapes()->addAutoShape(ShapeType::Line, 50, 150, 300, 0);
    $pres->save("NewPresentation_out.pptx", SaveFormat::Pptx);
}
finally
{
    if (!java_is_null($pres)) $pres->dispose();
}
?>

سایر محدودیت‌های Aspose.Slides for PHP از طریق API جاوا در مقایسه با Aspose.Slides for Java API

فضای‌نام Aspose.Slides و کلاس‌های جاوایی که استفاده می‌شوند، بسته‌بندی‌های ایجاد شده توسط PhpJavaBridge بر روی کلاس‌های جاوا با همان نام از بسته com.aspose.slides هستند.

1. بسته‌بندی پارامترها و آرگومان‌های جاوا

پارامترها و آرگومان‌هایی که بر می‌گردانند و می‌پذیرند، بسته‌بندی‌هایی بر روی کلاس‌های جاوا با همان نام هستند. فقط رشته‌ها و نوع‌های عددی به‌طور خودکار تبدیل می‌شوند. آرایه‌ها، مجموعه‌ها، بایت‌ها و بولی‌ها تبدیل نمی‌شوند.

یک خطای رایج:

if ($node->isAssistant()) - wrong!
if (java_values($node->isAssistant())) - correct!

2. ارث‌بری کلاس جاوا و عملگر instanceof

نمی‌توانید یک کلاس جاوا را از کلاس PHP ارث‌ب ببرید. به‌عنوان راه‌حل، می‌توانید در صورت نیاز ترکیب (composition) را پیاده‌سازی کنید. عملگر instanceof فقط برای یک کلاس مشخص کار می‌کند. برای رابط (interface) یا کلاس والد کار نمی‌کند.

workaround

3. یک آرایه جاوا یک آرایه PHP نیست

ایجاد آرایه جاوا در PHP:

$Array = new JavaClass("java.lang.reflect.Array");
$Integer = new JavaClass("java.lang.Integer");
$IntegerArray = $Array->newInstance($Integer, 2);
$IntegerArray[0] = 1;
$IntegerArray[1] = 0;

4. طول آرایه جاوا

$data->length; - does NOT work

راه‌حل

$Array = new JavaClass("java.lang.reflect.Array");
$Array->getLength($data);

5. متد Java Files.readAllBytes

$htmlBytes = Files->readAllBytes(Paths->get("embedOle.html")); - does NOT work

راه‌حل

$file = new Java("java.io.File", "embedOle.html");
$Array = new JavaClass("java.lang.reflect.Array");
$Byte = new JavaClass("java.lang.Byte");
$htmlBytes = $Array->newInstance($Byte, $Array->getLength($file));
try {
    $dis = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", $file));
    $dis->readFully($htmlBytes);
} finally {
    if (!java_is_null($dis)) $dis->close();
}

6. متد Java Files.write

Files->write(new File($path)->toPath(), $fontData, StandardOpenOption::CREATE); - does NOT work

راه‌حل

$fstr = new Java("java.io.FileOutputStream", $path);
$Array = new java_class("java.lang.reflect.Array");
try {
    $fstr->write($fontData, 0, $Array->getLength($fontData));
} finally {
	$fstr->close();
}