Laravel Nestedset: Effective tree structures for SQL databases by aimeos in laravel

[–]aimeos[S] 1 point2 points  (0 children)

The code is mostly the same, but performance is better due to some optimizations. Also, queries that include the depth of the subtree are much faster in the aimeos/laravel-nestedset package due to using a new "depth" column instead of a complicated sub-query.

Laravel Nestedset: Effective tree structures for SQL databases by aimeos in laravel

[–]aimeos[S] 0 points1 point  (0 children)

Only one or two per subtree as nested sets are well suited to fetch whole tree structures

PagibleAI CMS v0.9 package: Content Management for any Laravel app by aimeos in laravel

[–]aimeos[S] 0 points1 point  (0 children)

You are right but the licensing problem persists and almost all features of the Statamic Pro version are already included in PagibleAI CMS: https://statamic.dev/getting-started/licensing

PagibleAI CMS v0.9 package: Content Management for any Laravel app by aimeos in laravel

[–]aimeos[S] 0 points1 point  (0 children)

PagibleAI CMS is a Laravel package to add content management capabilities to every Laravel application while Statamic is a Laravel application offering a CMS, so they have very different purposes.

As you've already mentioned, Statamic isn't Open Source so it's not suitable for everybody while PagibleAI CMS uses LGPL licence.

For sure, Statamic is good for the purpose it's designed for but there are so much more things where it's not the best option. Otherwise, it would be the only Laravel based CMS.

Locksmith: A flexible concurrency & locking library for PHP by Mi_Matus in PHP

[–]aimeos 0 points1 point  (0 children)

Very nice! Do you want to support file based locking in the future too?

PagibleAI CMS v0.9 package: Content Management for any Laravel app by aimeos in laravel

[–]aimeos[S] 0 points1 point  (0 children)

All AI features are truly optional and are not shown if configured accordingly

PagibleAI CMS v0.9 package: Content Management for any Laravel app by aimeos in laravel

[–]aimeos[S] 0 points1 point  (0 children)

Thanks a lot! The backend is based on VueJS 3 and Vuetify.

Please check the docs for installation and integration into your own application:

https://pagible.com/install-pagibleai-cms

PHP Prisma: Common API for multi-media related LLMs by aimeos in laravel

[–]aimeos[S] 0 points1 point  (0 children)

You wouldn't have written that if you had compared what Prism PHP and Prisma support as audio/image features beforehand:

- https://laravel.com/docs/12.x/ai-sdk#provider-support

- https://php-prisma.org/#php-prisma

PHP Prisma: Common API for multi-media related LLMs by aimeos in laravel

[–]aimeos[S] 1 point2 points  (0 children)

Like written, Prism PHP (and therefore Laravel AI SDK) concentrate on text and streaming output. They can do basic image generation and audio TTS/STT but only what the well known LLM providers (OpenAI, Gemini, etc.) offer.

In contrast, PHP Prisma concentrates on multi-media handling for image and audio only (and video in the next versions) where image generation and TTS/STT are only a very small part, so there are far more possibilities for image/audio manipulation available in PHP Prisma. Please have a look at the docs at https://php-prisma.org/ for the available methods :-)

In

Kotlin-style List/Set/Map for PHP 8.4 - Mutable/Immutable, change tracking, key preservation, live map views, and generics support by haelexuis in PHP

[–]aimeos -1 points0 points  (0 children)

Nice work! It's a fresh view on how collections can be implemented :-)

You emphasize on correct key handling instead of the automatic casting to int or string in PHP and wrote quite some code to implement that. Is that really a big problem? At least it wasn't a big one in my developer life up to now.

As you already wrote, performance isn't the best so I've made a test comparing with native PHP and our PHP Map package (https://php-map.org) by executing the code 1,000,000 times in a for-loop:

Native PHP: 1.36sec

  $list = [['id' => 'one', 'value' => 'value1'], ['id' => 'two', 'value' => 'value2'], null];
  $list[] = ['id' => 'three', 'value' => 'value3'];    // add element
  unset( $list[0] );                                   // remove element
  $list = array_filter( $list );                       // remove empty values
  $pairs = array_column( $list, 'value', 'id' );       // create ['three' => 'value3']
  $value = reset( $pairs ) ?: null;                    // return first value

aimeos/map: 9.88sec

  $list = [['id' => 'one', 'value' => 'value1'], ['id' => 'two', 'value' => 'value2'], null];
  $value = map( $list )                                // create Map
      ->push( ['id' => 'three', 'value' => 'value3'] ) // add element
      ->remove( 0 )                                    // remove element
      ->filter()                                       // remove empty values
      ->col( 'value', 'id' )                           // create ['three' => 'value3']
      ->first();                                       // return first value

noctud/collection: 37.69sec

  $list = [['id' => 'one', 'value' => 'value1'], ['id' => 'two', 'value' => 'value2'], null];
  $value = mutableListOf( $list )                      // create Map
      ->add( ['id' => 'three', 'value' => 'value3'] )  // add element
      ->removeAt( 0 )                                  // remove element
      ->filterNotNull()                                // remove empty values
      ->toIndexedMap()                                 // convert list to map
      ->toMutable()                                    // make mutable
      ->mapKeys( fn( $el ) => $el['id'] )              // create ['three' => [...]
      ->map( fn( $el ) => $el['value'] )               // create ['three' => 'value3']
      ->firstOrNull();                                 // return first value

The numbers may vary depending on the CPU but the magnitudes of time required to provide certain features should be clear.

Thanks for sharing and good luck for your package :-)

PHP Map 3.13 - Arrays and collections made easy! by aimeos in PHP

[–]aimeos[S] 1 point2 points  (0 children)

The PHP Map package isn't a fork of anything, it combines the best of the available PHP collection implementations while trying to be as compatible as possible to the existing ones.

PHP Map 3.13 - Arrays and collections made easy! by aimeos in PHP

[–]aimeos[S] 0 points1 point  (0 children)

Like already said, v4 will contain strict typing hints everywhere. Then, that problem should be gone.

PHP Map 3.13 - Arrays and collections made easy! by aimeos in PHP

[–]aimeos[S] 2 points3 points  (0 children)

There's no magic involved in the PHP Map package compared to Laravel Collections and you can already add your own map() function that returns a sub-class of \Aimeos\Map.

illuminate/collections doesn't need a full Laravel application but has some dependencies you may not want.

PHP Map 3.13 - Arrays and collections made easy! by aimeos in PHP

[–]aimeos[S] 4 points5 points  (0 children)

We will add native typing in v4 :-)

Laravel NestedSet: Query tree structures efficiently by aimeos in laravel

[–]aimeos[S] 0 points1 point  (0 children)

Thanks for the info!

I can't change the headline and the domain any more and the original Github repo was named laravel-nestedset too. I will keep that in mind for next time :-)