Installation:
composer require crosiersource/crosierlib-base
Ensure your composer.json includes "minimum-stability": "dev" if the package is in development.
First Use Case:
src/ directory for core classes like:
use CrosierLib\Base\Helpers\StringHelper;
StringHelper::snakeCase('CamelCaseString'); // Example hypothetical method
README.md for a "Quick Start" section or examples. If none exists, explore the tests/ folder for usage patterns.Configuration:
config/crosierlib.php), publish it:
php artisan vendor:publish --provider="CrosierLib\Base\ServiceProvider"
Base Classes/Traits:
BaseModel, BaseController) to enforce consistency across your Laravel app.
use CrosierLib\Base\Traits\HasSoftDeletes;
class User extends Model
{
use HasSoftDeletes;
}
Utility Helpers:
use CrosierLib\Base\Helpers\ArrayHelper;
$filteredArray = ArrayHelper::filterByKey($array, ['active', 'published']);
Service Layer:
$service = app(\CrosierLib\Base\Services\DataService::class);
$processedData = $service->transform($rawData);
Event/Listener Integration:
EventServiceProvider:
protected $listen = [
\CrosierLib\Base\Events\DataProcessed::class => [
\App\Listeners\LogProcessedData::class,
],
];
Middleware:
Route::middleware(['crosier.auth'])->group(function () {
// Routes requiring CrosierLib auth
});
AppServiceProvider if not auto-discovered:
public function register()
{
if (! app()->bound('crosierlib')) {
$this->app->bind('crosierlib', function () {
return new \CrosierLib\Base\CrosierLib();
});
}
}
php bin/phpunit) as a reference for writing your own tests. Mock dependencies where needed:
$mockService = Mockery::mock(\CrosierLib\Base\Services\DataService::class);
$this->app->instance(\CrosierLib\Base\Services\DataService::class, $mockService);
Lack of Documentation:
src/, tests/) for usage examples.StringHelper::format() exists but isn’t documented, check its test file for expected input/output.Namespace Conflicts:
Helpers, Services). Ensure your app’s namespaces don’t clash:
// Avoid:
namespace App\Helpers; // If CrosierLib also has \Helpers
Configuration Overrides:
config/crosierlib.php to match your app’s time zone:
'timezone' => 'America/New_York',
Dependency Assumptions:
Testing Quirks:
php bin/phpunit) may rely on Laravel’s testing helpers (e.g., RefreshDatabase). Run tests in a Laravel environment to avoid errors:
composer require --dev orchestra/testbench
Enable Debugging:
// config/debugbar.php
'collectors' => [
\CrosierLib\Base\Debug\DebugCollector::class,
],
dd() or dump() to inspect objects:
dd(\CrosierLib\Base\Helpers\StringHelper::getClassMethods());
Logging:
try {
$result = \CrosierLib\Base\Services\DataService::process($data);
} catch (\Exception $e) {
\Log::error('CrosierLib error: ' . $e->getMessage());
}
Extension Points:
namespace App\Extensions;
use CrosierLib\Base\Services\BaseService;
class ExtendedService extends BaseService
{
public function customMethod()
{
// Override or extend functionality
}
}
Avoid Overhead: If the package includes heavy operations (e.g., recursive data processing), cache results:
$cachedData = Cache::remember('crosier_processed_data', 60, function () {
return \CrosierLib\Base\Services\DataService::process($data);
});
Lazy Loading: Defer initialization of package services until needed:
$service = app()->make(\CrosierLib\Base\Services\DataService::class);
How can I help you explore Laravel packages today?