Download the PHP package tatter/firebase without Composer
On this page you can find all versions of the php package tatter/firebase. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download tatter/firebase
More information about tatter/firebase
Files in tatter/firebase
Package firebase
Short Description Firebase integration for CodeIgniter 4
License MIT
Homepage https://github.com/tattersoftware/codeigniter4-firebase
Informations about the package firebase
Tatter\Firebase
Firebase integration for CodeIgniter 4
Quick Start
- Install with Composer:
> composer require tatter/firebase
- Edit .env and add the path to your Firebase credentials:
GOOGLE_APPLICATION_CREDENTIALS = ../credentials/keyfile.json
- Access components via the service:
$authentication = service('firebase')->auth;
- Use the Firestore
Collection
andEntity
to model your data:$widget = collection(WidgetCollection::class)->get($widgetId);
Description
This is a CodeIgniter 4 integration of Kreait\Firebase
, the "Unofficial Firebase Admin
SDK for PHP":
It provides a convenience service and custom Firestore classes to use your Firebase project within CodeIgniter 4. Please pay attention to the requirements of the underlying services:
Notably, you must have the gRPC PHP extension and the credentials file to a Service Account with the Project -> Editor or Project -> Owner role.
Installation
Install easily via Composer to take advantage of CodeIgniter 4's autoloading capabilities and always be up-to-date:
Or, install manually by downloading the source files and adding the directory to app/Config/Autoload.php.
Note: As of February 5, 2022 this library fully supports PHP 8.1, however Google's Protobuf has an incompatibility (hopefully fixed soon: https://github.com/protocolbuffers/protobuf/issues/9293).
Credentials
You must provide a key file with your application's service account credentials. The standard way to do this is to add keyfile.json to your project and edit .env to its path (relative to public/):
GOOGLE_APPLICATION_CREDENTIALS = ../keyfile.json
WARNING Make sure you exclude the key file from any repository updates!
To generate a key file from your Firebase project:
- Firebase Project Home
- Project Settings (gear)
- Service Accounts
- Firebase Admin SDK
- Generate new private key
For more info on acquiring credentials see the Firestore Quick Start Guide
For more information on credential specification see the SDK setup docs
Usage
Load the Firebase service:
The service will handle creating and caching each component as you need them. Access components by their name:
You can also use the service to access all the functions of Kreait\Firebase\Factory
directly, for example if you wanted a separate component instance:
See the SDK docs for a list of supported components. Available at the time of this writing:
- Auth
- Database
- Firestore
- Messaging
- RemoteConfig
- Storage
- Caller
Caller
While not yet officially supported by the Firebase SDK, this library includes a component for Firebase callable functions. A simple example shows all its features:
Firestore
This library provides access to the Firestore database directly via FirestoreClient
.
Use the helper function for direct access to a shared instance of the client:
Since the SDK and Google classes already represent a full database implementation there is no need for a framework database layer. You can interact directly with the Firestore classes according to Google's User Guide.
Collection
The Collection
class is inspired by the framework's Model
and handles most of the pre-
and post-processing that developers are used to. All you need to supply is the name of the
collection and the Entity type to use:
Instantiating
You can create your collection instances just like you would a Model
. The Firestore
Helper also contains a helper function to create and manage shared instances, just like
the framework's model()
helper:
By default a new Collection will create a CollectionReference
to the top-level collection
matching it's NAME
constant. Alternatively you may pass in a CollectionReference
directly
for it to use. Use the second parameter to the collection()
function to make instant
subcollections of any Firestore\Entity
or DocumentReference
:
Methods
Collection
supplies the following CRUD methods:
add(array|Entity $entity): Entity
update(Entity $entity, array $data): Entity
remove(Entity|string $entity): void
get(DocumentReference|string $reference): ?Entity
list($source = null): Traversable
Read more below
And support methods:
fromSnapshot(DocumentSnapshot $snapshot): Entity
fake(array<string, mixed> array $overrides = []): Entity
make(array<string, mixed> array $overrides = []): Entity
*Same asfake()
but inserts the document
Additionally, these methods access metadata about the underlying Firestore (sub)collection:
collection(): CollectionReference
parent(): ?DocumentReference
id(): string
name(): string
path(): string
And finally some familiar Model
-inspired validation methods:
setValidation(ValidationInterface $validation): self
skipValidation(bool $skip = true)
validate(array $data, bool $cleanValidationRules = true): bool
getValidationRules(array $options = []): array
getErrors(): array
Retrieving Documents
You may use the Firestore client directly to return snapshots and convert them to your Entity
of choice with fromSnapshot()
, but Collection
also allows specifying an overriding state
for list()
. This can be an explicit CollectionReference
or (more helpful) an instance of
Google\Cloud\Firestore\Query
, which opens up the possibility of using filters, sorts, and
limits as well as traversing collection groups:
To make this even easier, Collection
will "pass through" the following method calls to
the underlying collection:
endAt()
,endBefore()
,limit()
,limitToLast()
,offset()
,orderBy()
,select()
,startAfter()
,startAt()
,where()
This allows for even easier method chaining:
Note that
list()
always returns aTraversable
so documents are only retrieved and converted ot Entities as they are actually needed
Entity
This library also comes with its own Firestore Entity
that handles Google's timestamp
conversions and these methods to access metadata about the underlying Firestore document:
document(?DocumentReference $document = null): ?DocumentReference
Gets or sets the documentid(): string
super(): ?DocumentReference
Gets an Entity's parent Entity, if it is from a subcollection
All versions of firebase with dependencies
google/cloud-firestore Version ^1.10
google/protobuf Version ^3.3
grpc/grpc Version ^1.1
kreait/firebase-php Version ^5.0 || ^6.0