1. Go to this page and download the library: Download seanmorris/ids library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
seanmorris / ids example snippets
use \SeanMorris\Ids\Settings;
$someVar = Settings::read('some', 'var');
$someOtherVar = Settings::read('some', 'otherVar');
use \SeanMorris\Ids\Log;
Log::trace(...$messages); # Log a message along with a stacktrace.
Log::query(...$messages); # Log query-level information
Log::debug(...$messages); # Log debug information
Log::info(...$messages); # Log general information
Log::warn(...$messages); # Issue a warning
Log::error(...$messages); # Issue an error
namespace SeanMorris\Ids\Logger;
class AdditionalLogger implements \SeanMorris\Ids\Logger
{
public static function start($logBlob)
{/* ... */}
public static function log($logBlob)
{/* ... */}
}
namespace SeanMorris\ExamplePackage\Test;
class ExampleTest extends \UnitTestCase
{
public function testSomething()
{
// ...
}
}
use \SeanMorris\Ids\Disk\File;
$file = File::open($filename);
//Check if file exists
if($file->check())
{
// ...
}
//Get the path to the file
$path = $file->name();
//Copy the file to another location.
$copiedFile = $file->copy($newLocation);
// Read byte-by-byte
while(!$file->eof())
{
$byte = $file->read(1);
}
// Read entire file:
$content = $file->slurp();
// Append
$file->write($content);
// Overwrite
$file->write($content, FALSE);
namespace SeanMorris\ExamplePackage\Idilic\Route;
class RootRoute implements \SeanMorris\Ids\Routable
{
/** Help text goes here. */
public function commandName($router)
{}
}
namespace Author\Package;
use \DatetimeCollection;
use \SeanMorris\Ids\Collection;
// Create DatetimeCollection based on the existing Collection class
Collection::of(Datetime::CLASS, DatetimeCollection::CLASS);
// Create an instance of the new class:
$datetimeCollection = new DatetimeCollection();
$injectableClass = (new class { use Injectable; })::inject([]);
use \SeanMorris\Ids\Injectable;
(new class { use Injectable; })::inject([], AwesomeInjectable::CLASS);
class AwesomeClass extends AwesomeInjectable
{
public function someMethod()
{
// here there be behaviors...
}
}
use \SeanMorris\Ids\Injectable;
$anonymousClass = new class
{
use Injectable;
public function doSomething()
{
echo "I'm doing something.";
}
};
// Pr
$anonymousClass::inject([], NamedClass::CLASS);
$anonymousClass = new class
{
public function doSomething()
{
echo "I'm doing something.";
}
};
Loader::define([ NamedClass::CLASS => $anonymousClass ]);
use \SeanMorris\Ids\Injectable;
(new class { use Injectable; })::inject([
InjectedDate::CLASS => Datetime::CLASS
], AwesomeInjectable::CLASS);
class DateFormatter extends AwesomeInjectable
{
protected static $InjectedDate;
public function dateToTimestamp($date)
{
$datetime = new static::$InjectedDate($date);
return $datetime->getTimestamp();
}
}
class DateFormatter extends AwesomeInjectable
{
protected static $InjectedDate;
public static function dateToTimestamp($date)
{
$datetime = new static::$InjectedDate($date);
return $datetime->getTimestamp();
}
}
// Inherit injected classes normally:
class CoolDateFormatter extends DateFormatter
{
// ...
}
// Or create new subclasses by injecting the class and passing a new name:
// (AwesomeDateFormatter is being created based on DateFormatter here)
DateFormatter::inject([
InjectedDate::CLASS => \Awesome\Project\AwesomeDatetime::CLASS
], AwesomeDateFormatter::CLASS);
class EvenCoolerDateFormatter extends AwesomeDateFormatter
{
// ...
}
use \SeanMorris\Ids\Collection;
use \SeanMorris\Ids\WrappedMethod;
$RankIterator = $collectionClass::$RankIterator::inject([
'map' => WrappedMethod::wrap($callback)
]);
$mappedCollection = Collection::inject([
'RankIterator' => $RankIterator
]);
use \SeanMorris\Ids\Collection;
use \SeanMorris\Ids\WrappedMethod;
$collectionClass::$RankIterator::inject([
'map' => WrappedMethod::wrap($callback)
], \InjectedRankIterator::CLASS);
class SubInjectedRankIterator extends InjectedRankIterator
{
//...
}
$mappedCollection = Collection::inject([
'RankIterator' => SubInjectedRankIterator::CLASS
]);
use \SeanMorris\Ids\Injectable;
class RegularOldClass
{
// ...
}
(new class() extends RegularOldClass { use Injectable; })::inject(
[], InjectableRegularOldClass::CLASS
);
$object = new InjectableRegularOldClass();
class RankIterator extends AppendIterator
{
use Injectable;
protected static $map;
// ...
public function current()
{
$value = $this->getInnerIterator()->current();
if(static::$map)
{
$mapper = static::$map;
$value = $mapper($value, $this->key());
}
return $value;
}
// ...
}
use \SeanMorris\Ids\WrappedMethod;
use \SeanMorris\Ids\Collection\RankIterator;
$MappedRankIterator = RankIterator::inject([
'map' => WrappedMethod::wrap(function($input){
$output = doSomething($input);
return $output;
})
]);
$iterator = new $MappedRankIterator;
use \SeanMorris\Ids\Inject\FactoryMethod;
$coolDateFormatter = AwesomeDateFormatter::inject([
assembledObject::CLASS => FactoryMethod::wrap(function(){
$object = new StdClass;
$object->someProperty = 'important value';
$object->someOtherVar = 'slightly less important value';
return $object;
})
]);
use \SeanMorris\Ids\Inject\SingletonMethod
class AwesomeLogger
{
protected $fileHandle;
writeLog($line)
{
fwrite($this->fileHandle, $line);
}
}
$CoolerLogger = AwesomeLogger::inject([
logFile::CLASS => SingletonMethod::wrap(function(){
$fileHandle = fopen(LOG_FILE_LOCATION, 'a');
fwrite("Log started!\n", $fileHandle);
return $fileHandle;
})
]);
$logger = new $CoolerLogger;
$logger->writeLine('This is a log line!');
$injections = [logFile::CLASS => \___\LogFileInjectable::CLASS];
(new class { use Injectable; })::inject($injections, AwesomeLogger::CLASS);
use \SeanMorris\Ids\Loader;
// We can alias classes even if they don't exist yet:
// If we were in a namespace, this would prevent it
// from inheriting the FQNS.
use \___\LogFileInjectable;
Loader::define([ LogFileInjectable::CLASS => ActualLogFileClass::CLASS ]);
use \SeanMorris\Ids\Mail;
$mail = new \SeanMorris\Ids\Mail;
$mail->body(<<<EOM
Message body here.
EOM);
$mail->from(\SeanMorris\Ids\Settings::read('noreply'));
$mail->subject('Hello from Ids!');
$mail->to($recipientEmail);
$mail->send(TRUE);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.