القيود واختلافات API

اختلافات واجهة برمجة التطبيقات العامة

هذه القائمة، باستخدام مقاطع شفرة عينة، تُظهر بعض الاختلافات بين Aspose.Slides لـ Java و Aspose.Slides لـ PHP عبر واجهات برمجة تطبيقات Java.

استيراد المكتبة (مقارنات الحزم)

Aspose.Slides for Java

import com.aspose.slides.*;

Aspose.Slides for PHP via Java

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 via Java

$presentation = new Presentation();

التعدادات أو الثوابت

Aspose.Slides for Java

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

Aspose.Slides for PHP via Java

$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 via Java

<?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 لـ PHP عبر واجهة برمجة تطبيقات Java مقارنةً بـ Aspose.Slides لـ Java

مساحات الأسماء Aspose.Slides والفئات الجاوية التي يستخدمونها هي أغلفة تم إنشاؤها بواسطة PhpJavaBridge فوق فئات Java ذات الاسم نفسه من حزمة com.aspose.slides.

1. تغليف معلمات Java والوسائط

المعلمات والوسائط التي تُرجعها وتستقبلها هي أغلفة فوق فئات Java ذات نفس الأسماء. يتم تحويل السلاسل وأنواع الأعداد تلقائيًا فقط. لا يتم تحويل المصفوفات، والمجموعات، والبايتات، والأنواع البوليانية.

خطأ شائع:

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

2. توسيع فئة Java ومشغل instanceof

لا يمكنك توسيع فئة Java من فئة PHP. كحل بديل، يمكنك تطبيق التركيب عند الحاجة. مشغل instanceof يعمل فقط مع فئة محددة. لا يعمل مع واجهة الفئة أو الفئة الأصلية.

workaround

3. مصفوفة Java ليست مصفوفة PHP

إنشاء مصفوفة Java في 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. طول مصفوفة Java

$data->length; - does NOT work

workaround

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

5. طريقة Java Files.readAllBytes

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

workaround

$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

workaround

$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();
}