Avoiding Collisions in Packages
- When packages modify base classes or resolvers, they can conflict with other packages
- Macros let packages extend behaviour without overriding the class itself
- This avoids the collision that occurs when two packages redefine the same base class
use Illuminate\Database\Connection;
use Dyrynda\Database\Connection\MySqlConnection;
use Dyrynda\Database\Connection\SQLiteConnection;
use Dyrynda\Database\Connection\PostgresConnection;
Connection::resolverFor('mysql', function ($connection, $database, $prefix, $config): MySqlConnection {
return new MySqlConnection($connection, $database, $prefix, $config);
});
Connection::resolverFor('postgres', function ($connection, $database, $prefix, $config): PostgresConnection {
return new PostgresConnection($connection, $database, $prefix, $config);
});
Connection::resolverFor('sqlite', function ($connection, $database, $prefix, $config): SQLiteConnection {
return new SQLiteConnection($connection, $database, $prefix, $config);
});← / → navigate · N notes · Esc exit