GraPHP هي مكتبة الرسم البياني/الشبكة الرياضية المكتوبة بلغة PHP.
الإصدار التطويري: يحتوي هذا الفرع على الكود الخاص بالإصدار 1.0 القادم. للحصول على كود الإصدار المستقر الحالي 0.9، قم بمراجعة الفرع
0.9.x
سيكون الإصدار 1.0 القادم هو الطريق للمضي قدمًا في هذه الحزمة. ومع ذلك، سنستمر في دعم الإصدار 0.9.x بشكل فعال لأولئك الذين لم يستخدموا الإصدار الأحدث بعد. انظر أيضًا تعليمات التثبيت لمزيد من التفاصيل.
جدول المحتويات
بعد التثبيت، لنبدأ بتهيئة نموذج للرسم البياني:
<?php
require __DIR__ . ' /vendor/autoload.php ' ;
$ graph = new Graphp Graph Graph ();
// create some cities
$ rome = $ graph -> createVertex ( array ( ' name ' => ' Rome ' ));
$ madrid = $ graph -> createVertex ( array ( ' name ' => ' Madrid ' ));
$ cologne = $ graph -> createVertex ( array ( ' name ' => ' Cologne ' ));
// build some roads
$ graph -> createEdgeDirected ( $ cologne , $ madrid );
$ graph -> createEdgeDirected ( $ madrid , $ rome );
// create loop
$ graph -> createEdgeDirected ( $ rome , $ rome );
دعونا نرى أي مدينة (فيرتكس) لديها طريق (أي حافة تشير) إلى روما:
foreach ( $ rome -> getVerticesEdgeFrom () as $ vertex ) {
echo $ vertex -> getAttribute ( ' name ' ) . ' leads to Rome ' . PHP_EOL ;
// result: Madrid and Rome itself lead to Rome
}
تم إنشاء هذه المكتبة حول مفهوم نظرية الرسم البياني الرياضي (أي أنها ليست مكتبة رسوم بيانية لرسم رسم بياني للدالة). في جوهره، الرسم البياني هو مجموعة من العقد مع أي عدد من الاتصالات بينهما. في نظرية الرسم البياني، القمم (جمع قمة) هي تمثيل مجردة لهذه العقد ، في حين يتم تمثيل الاتصالات كحواف . قد تكون الحواف إما غير موجهة ("ثنائية الاتجاه") أو موجهة ("ذات اتجاه واحد"، والمعروفة أيضًا باسم الحواف الثنائية، والأقواس).
اعتمادًا على كيفية إنشاء الحواف، يمكن أن يكون الرسم البياني بأكمله إما غير موجه، أو يمكن أن يكون رسمًا بيانيًا موجهًا (ويعرف أيضًا باسم digraph) أو رسمًا بيانيًا مختلطًا. يُسمح أيضًا للحواف بتكوين حلقات (أي حافة من الرأس A تشير إلى الرأس A مرة أخرى). أيضًا، يتم دعم الحواف المتعددة من الرأس A إلى الرأس B أيضًا (المعروفة أيضًا باسم الحواف المتوازية)، مما يشكل بشكل فعال رسمًا بيانيًا متعددًا (المعروف أيضًا باسم الرسم الكاذب). وبالطبع، يتم دعم أي مجموعة منها أيضًا. بينما يحاول العديد من المؤلفين التمييز بين هذه المفاهيم الأساسية، تحاول هذه المكتبة جاهدة عدم فرض أي قيود أو افتراضات مصطنعة على الرسوم البيانية الخاصة بك.
توفر هذه المكتبة هياكل البيانات الأساسية للعمل مع الرسوم البيانية ورؤوسها وحوافها وسماتها.
هناك العديد من المكونات الرسمية المبنية فوق هذه الهياكل لتوفير الوظائف المطلوبة بشكل شائع. تسمح هذه البنية باستخدام هذه المكونات بشكل مستقل وعند الطلب فقط.
فيما يلي قائمة ببعض المكونات المميزة. يمكن العثور على قائمة بجميع المكونات الرسمية في مشروع graphp.
تم تصميم هذه المكتبة لدعم تصور صور الرسم البياني، بما في ذلك في صفحات الويب، وفتح الصور من داخل تطبيقات CLI وتصديرها بتنسيقات ملفات PNG أو JPEG أو SVG (من بين العديد من التنسيقات الأخرى). نظرًا لأن رسم الرسم البياني يعد مجالًا معقدًا في حد ذاته، فإن التخطيط الفعلي للرسم البياني متروك لبرنامج GraphViz "برنامج تصور الرسم البياني" الممتاز ونحن نقدم فقط بعض واجهات برمجة التطبيقات الملائمة للتفاعل مع GraphViz.
راجع graphp/graphviz لمزيد من التفاصيل.
إلى جانب رسم الرسوم البيانية، أحد الأشياء الأكثر شيوعًا المتعلقة بالرسوم البيانية هو تشغيل الخوارزميات لحل مشكلات الرسم البياني الشائعة. ولذلك يتم استخدام هذه المكتبة كأساس لتطبيقات عدد من خوارزميات الرسم البياني شائعة الاستخدام:
راجع الرسم البياني/الخوارزميات لمزيد من التفاصيل.
الطريقة الموصى بها لتثبيت هذه المكتبة هي من خلال Composer. جديد للملحن؟
بمجرد إصداره، سيتبع هذا المشروع SemVer. في الوقت الحالي، سيؤدي هذا إلى تثبيت أحدث إصدار للتطوير:
composer require graphp/graph:^1@dev
راجع أيضًا سجل التغيير للحصول على تفاصيل حول ترقيات الإصدار.
يهدف هذا المشروع إلى التشغيل على أي نظام أساسي وبالتالي لا يتطلب أي امتدادات PHP ويدعم التشغيل على PHP 5.3 القديم حتى PHP 8+ الحالي. يوصى بشدة باستخدام أحدث إصدار PHP مدعوم لهذا المشروع.
قد ترغب أيضًا في تثبيت بعض المكونات الإضافية. يمكن العثور على قائمة بجميع المكونات الرسمية في مشروع graphp.
تستخدم هذه المكتبة PHPUnit لمجموعة الاختبارات الشاملة الخاصة بها. لتشغيل مجموعة الاختبار، تحتاج أولاً إلى استنساخ هذا الريبو ثم تثبيت جميع التبعيات من خلال Composer:
composer install
لتشغيل مجموعة الاختبار، انتقل إلى جذر المشروع وقم بتشغيل:
vendor/bin/phpunit
تأتي هذه المكتبة مع مجموعة اختبارات شاملة ويتم اختبارها واستخدامها بشكل منتظم في العالم الحقيقي . على الرغم من ذلك، لا تزال هذه المكتبة تعتبر برنامجًا تجريبيًا وواجهة برمجة التطبيقات (API) الخاصة بها عرضة للتغيير. يسرد سجل التغيير جميع المعلومات ذات الصلة بالتحديثات بين الإصدارات.
إذا واجهت أي مشكلات، من فضلك لا تتردد في مراسلتنا أو تقديم تقرير بالأخطاء أو من الأفضل أن تقدم لنا طلب التصحيح/السحب و/أو اختبار الوحدة لإعادة إنتاج مشكلتك.
إلى جانب العمل المباشر مع الكود، فإننا نقدر أيضًا أي وثائق إضافية أو إضافات إلى ملفنا التمهيدي أو حتى إصلاح الأخطاء المطبعية البسيطة.
أي ردود فعل و/أو مساهمة هي موضع ترحيب!
راجع #graphp على irc.freenode.net.
تم إصدار هذا المشروع بموجب ترخيص MIT المسموح به.
هل تعلم أنني أقدم خدمات التطوير المخصصة وإصدار الفواتير لرعاية الإصدارات والمساهمات؟ تواصل معي (@clue) للتفاصيل.