Support Package For PHP, Laravel and PHP Frameworks
- Requirements
- Installation
- All Paths
- Number to Words
- Tame
- Str
- Usage
- phone
- mask
- html
- text
- shorten
- random
- formatString
- formatOnlyString
- encrypt
- decrypt
- bindings
- flattenValue
- exceptArray
- replaceFirst
- replaceLast
- renameArrayKeys
- forgetArrayKeys
- changeKeyCase
- convertArrayCase
- padLeft
- padRight
- words
- ascii
- is
- snake
- camel
- kebab
- title
- studly
- slugify
- slug
- before
- after
- between
- contains
- truncate
- reverse
- count
- countOccurrences
- uuid
- randomWords
- extension
- wrap
- head
- last
- TextSanitizer
- Utility
- Country
- File
- Collection
- Usage
- has
- count
- all
- isNotEmpty
- isEmpty
- isSame
- isDuplicate
- reverse
- pad
- combine
- collapse
- flatten
- zip
- merge
- only
- except
- chunk
- keys
- values
- filter
- reject
- where
- whereIn
- whereNotIn
- whereNull
- whereNotNull
- first
- firstWhere
- last
- startsWith
- endsWith
- matchesAnyPrefixOf
- contains
- doesntContain
- every
- some
- select
- map
- mapWithKeys
- pluck
- pluckDot
- groupBy
- search
- sort
- sortBy
- sortByMany
- sortByDesc
- sortKeys
- sortKeysDesc
- keyBy
- slice
- take
- takeUntil
- skip
- concat
- union
- toBase
- pipe
- crossJoin
- join
- unique
- each
- forget
- changeKeyCase
- reduce
- shuffle
- partition
- tap
- chunkWhile
- nth
- paginate
- zipWith
- countBy
- duplicates
- shuffleKeys
- average
- avg
- sum
- max
- min
- Zip
- Time
- time-usage
- now
- date
- today
- yesterday
- createFromFormat
- createFromDateString
- timestamp
- toJsTimer
- format
- toDateTimeString
- toDateString
- toTimeString
- diff
- diffBetween
- ago
- range
- addSeconds
- subSeconds
- addMinutes
- subMinutes
- addHours
- subHours
- addDays
- subDays
- addWeeks
- subWeeks
- addMonths
- subMonths
- addYears
- subYears
- greeting
- allTimezone
- setTimeZone
- getTimeZone
- HttpRequest
- Cookie
- Hash
- Asset
- Laravel
- View
- Env
- Manager
- Server
- Autoload Register
- Helpers Functions
- Error Dump
- Error Status
- Useful links
>= php 8.0+
Prior to installing support package get the Composer dependency manager for PHP because it'll simplify installation.
composer require tamedevelopers/support
| function name | Description |
|---|---|
| base_path() | Get absolute base directory path. Accepts a param string if given, and append to path |
| directory() | Thesame as base_path() |
| public_path() | Root/public path. Accepts a param string if given, and append to path |
| storage_path() | Root/storage path. Accepts a param string if given, and append to path |
| app_path() | Root/app path. Accepts a param string if given, and append to path |
| config_path() | Root/config path. Accepts a param string if given, and append to path |
| lang_path() | Root/lang path. Accepts a param string if given, and append to path |
| domain() | Returns domain URI. Accepts a param string if given, and append to path |
- Has three chainable methods
- Can translate all the way to
vigintillion - It's helper class can be called, using --
NumberToWords()
- Can translate all the way to
| iso (country iso3) | cents | number |
|---|---|---|
NGA | GBR | USA |
true | false |
int|float|string |
If iso is given and found, it'll automatically converts the text into a currency format |
If you want the decimals to be translated to text as well. | numeric figures: 299 | '42,982' | 3200.98 |
- Takes param as
stringand case-insensitive
NumberToWords::iso('nga');- Takes param as
boolean. Default isfalse- By default, it doesn't format the decimals
.00Must be set to true, to format if needed.
- By default, it doesn't format the decimals
NumberToWords::cents(true);- Takes one param as
int | float | string- If numbers is larger than a trillion
1_000_000_000_000, then the value must be passed as a string.
- If numbers is larger than a trillion
NumberToWords::value(1290);- Convert number to readable words
- Below, we're using the function helper method
NumberToWords()
->iso('TUR')
->value('120.953')
->cents(true)
->toText();
// Output: One hundred and twenty lira, nine hundred and fifty-three kuruş- Convert words to number
- comma
,is used to seperate decimals in words
- comma
use Tamedevelopers\Support\NumberToWords;
NumberToWords::value('twelve million three hundred thousand, six hundred and ninety-eight')
->cents(true)
->toNumber()
// Output: 12300000.698- The Core Class of Components
- It's helper class can be called, using --
Tame()
- It's helper class can be called, using --
use Tamedevelopers\Support\Tame;- Accepts 5 param. first param alone is needed
- All other params are [optional]
| Params | Description |
|---|---|
| bytes | The size in bytes to be converted |
| format | Whether to preserve case (default: lowercase) |
| gb | Custom label for GB (default: 'GB') |
| mb | Custom label for MB (default: 'MB') |
| kb | Custom label for KB (default: 'KB') |
Tame()->byteToUnit(6880);
// Output: 7kbTame()->unitToByte('24mb');
// Output: 25165824- Returns last edited time of the file as an -
int|false
Tame()->fileTime(base_path('filepath.php'));- Checks if a file exists and is not a directory -
bool
Tame()->exists(base_path('filepath.php'));
// Output: true or false- Deletes a file from the server if it exists and does not match the restricted file name -
void- [optional] second param <filename.extension>
Tame()->unlink(base_path('path/to/directory/avatar.png'), 'default.png');- Masks characters in a string based on position and length, with support for emails and custom masking characters.
| Params | Description |
|---|---|
$str |
The string to be masked. |
$length |
The number of visible characters. Default is 4. |
$position |
The position to apply the mask: 'left', 'center', or 'right' (default is 'right'). |
$mask |
The character used for masking (default is *). |
Tame()->mask('example@email.com', 4, 'left');
// Output: "exam***@email.com"
Tame()->mask('example@email.com', 4, 'right');
// Output: "e***mple@email.com"
Tame()->mask('shortstring', 4, 'center');
// Output: "sh*******ng"- Converts an image file to its Base64 representation. Supports local files and direct URLs -
null|string
Tame()->imageToBase64(base_path('path/to/image.jpg'));
// Output: "data:image/jpg;base64,..." (Base64 string for the image)
Tame()->imageToBase64('https://example.com/image.png', true);
// Output: "data:image/png;base64,..." (Base64 string for the URL image)- Returns the path to the SVG icon for the specified platform or operating system.
| Params | Description |
|---|---|
$platform |
Platform name windows | linux | android | mobile | phone | unknown | mac | macintosh | ios | iphone | c | os x |
$os_name |
OS name 'macos', 'os x', 'ios' |
$platform = Tame()->platformIcon('windows');
// Output: /path/to/icons/platform/windows.svg
include $platform;- Retrieves the path to the SVG icon for a specified payment method.
| Params | Description |
|---|---|
$payment |
add-money | alipay | bank | cc | credit-card | discover | faster-pay | groupbuy | maestro | mastercard | pay | payme | payment-card | payment-wallet | paypal | stripe-circle | tripe-sqaure | stripe | visa |
$payment = Tame()->paymentIcon('paypal');
// Output: /path/to/icons/payment/paypal.svg
include $payment;- Calculates the percentage relationship between two numbers as an -
int
Tame()->calPercentageBetweenNumbers(100, 80);- Formats a number to its nearest thousand, million, billion, or higher as a -
string|float|int
Tame()->formatNumberToNearestThousand(1500000);
// Output: "1.5m"- The Core Class For String Manipulations
- It's helper class can be called, using --
TameStr()
- It's helper class can be called, using --
use Tamedevelopers\Support\Str;
// Replace first/last occurrence
Str::replaceFirst('foo', 'bar', 'foofoo'); // 'barfoo'
Str::replaceLast('foo', 'bar', 'foofoo'); // 'foobar'
// Word limiting & ASCII
Str::words('The quick brown fox jumps', 3); // 'The quick brown...'
Str::ascii('Jürgen'); // 'Jurgen'
// Padding
Str::padLeft('7', 3, '0'); // '007'
Str::padRight('7', 3, '0'); // '700'
// Pattern matching
Str::is('user/*', 'user/42'); // true
Str::contains('brown', 'The quick brown fox'); // true
// Case/format helpers
Str::snake('Hello World'); // 'hello_world'
Str::camel('hello world'); // 'helloWorld'
Str::kebab('Hello World'); // 'hello-world'
Str::title('hello world'); // 'Hello World'
Str::studly('hello world'); // 'HelloWorld'
Str::slug('Hello World!'); // 'hello-world'
Str::slugify('À bientôt'); // 'a-bientot'
// Slicing
Str::before('user:42', ':'); // 'user'
Str::after('user:42', ':'); // '42'
Str::between('a[core]z', '[', ']'); // 'core'
// Transformations
Str::reverse('abc'); // 'cba'
Str::truncate('lorem ipsum', 5); // 'lo...'
// Randoms
Str::random(8); // 'a1B9...'
Str::uuid(); // 'xxxxxxxx-xxxx-4xxx-...'
Str::randomWords(3); // 'lor em ip'
// Arrays
Str::exceptArray(['a'=>1,'b'=>2], 'a'); // ['b'=>2]
Str::renameArrayKeys([['id'=>1]], 'id', 'user_id');// [['user_id'=>1]]
Str::forgetArrayKeys(['a'=>1,'b'=>2], 'a'); // ['b'=>2]
Str::bindings(['where'=>[1,2], 'join'=>[3]]); // [1,2,3]
Str::flattenValue([[1,2],[3]]); // [1,2,3]
Str::convertArrayCase(['Name'=>['Age'=>1]], 'lower', 'upper'); // ['name'=>['age'=>1]]
// Security/text helpers
Str::phone('+1 (555) 123-4567'); // '+15551234567'
Str::mask('1234567890', 4, 'right'); // '******7890'
Str::html('<b>Hi</b>'); // '<b>Hi</b>'
Str::text('<b>Hi</b>'); // 'Hi'
Str::shorten('Long sentence here', 10); // 'Long sente...'
Str::encrypt('secret'); // encrypted
Str::decrypt('...'); // original- The Core Class For String Sanitizer
- It's helper class can be called, using --
TameSanitizer()
- It's helper class can be called, using --
use Tamedevelopers\Support\TextSanitizer;
$text = "My number is 0812300089 and another is zero eight one two three four five six seven.
Visit https://x.com google.com or mail me at test@mail.com +23400000209
I love #coding with @friends. I also have two cats. 11092092-3";
$text2 = "I'm a beautiful zero nine zero and sweet in seven five seven eight available from ";
$text3 = "Reach me on zero eight one double two 555 nine or 0812220000";
$text4 = "Visit https://x.com google.com or mail me at test@mail.com @username.com. +23400";
$sanitizer->phoneInt($text); //
$sanitizer->phoneWords($text2); // I'm a beautiful [phone] available from
$sanitizer->phoneWords($text3); // Reach me on [phone]
$sanitizer->url($text4); // Visit [url] [url] or mail me at test@mail.com @username.com. +23400
$sanitizer->email($text4); // Visit https://x.com google.com or mail me at [email] @username.com. +23400
$sanitizer->mention($text4); // Visit https://x.com google.com or mail me at test@mail.com [username]. +23400
$sanitizer->findPhoneWords($text); // Collect all numbers both in words as return as int in array
// array [
// 0 => "0812300089"
// 1 => "081234567"
// 2 => "23400000209"
// 3 => "2110920923"
// ]
$sanitizer->sanitize($text); // sanitize all in a go!
// My number is [phone] and another is [phone].
// Visit [url] [url] or mail me at [email]. +[phone]
// I love [hastag] with [mention]. I also have two cats. [phone]-3
// sanitize(
// string $text,
// array $rules = [
// 'phoneInt' => '[phone]',
// 'phoneWords' => '[phone]',
// 'url' => '[url]',
// 'email' => '[email]',
// 'mention' => '[mention]',
// 'hastag' => '[hastag]',
// ]
// );- The Core Class For Email and String manipulations analysiss
- It's helper class can be called, using --
TameUtility()
- It's helper class can be called, using --
use Tamedevelopers\Support\Utility;
$text = "
The Christ the Redeemer Sanctuary, located in the heart of Rio de Janeiro, is the world’s
first open-air sanctuary, offering a sacred space welcoming people of all cultures,
beliefs, and backgrounds.";
$email = "maxwell+example@xd.org";
$email2 = "maxwell.example@gmail.com";
$email3 = "example+maxwell@icloud.com";
$util = Utility::text($text);
$util->readingTime(); // 10 seconds
$util->wordCount(); // 32
$util->charCount(); // 207
$util->sentenceCount(); // 1
$util->reverse(); // used to reverse the text words
Utility::text('This is a new text')->readingTime(); // 2 seconds
Utility::text("A man, a plan, a canal: Panama")->isPalindrome(); //true
$util->maskEmail($email); // *********xample@xd.org
Utility::normalizeEmail($email); // maxwell+example@xd.org
Utility::normalizeEmail($email2); // maxwell.example@gmail.com
Utility::normalizeEmail($email3); // example@icloud.com
Utility::isGmail($email2); // true
Utility::validateEmail($email); // true- Country data and helpers
- Class:
Tamedevelopers\Support\Country - It's helper class can be called, using --
TameCountry()
- Class:
- ISO codes and flags
use Tamedevelopers\Support\Country;
Country::getCountryIso3('name');
Country::getCountryIso2('name');
Country::getCountryFlagIso3('name');
Country::getCountryFlagIso2('name');- Months, Weeks, Time Zones, Captcha Locale
Country::getMonths('short');
Country::getWeeks('mon');
Country::getTimeZone('Europe/London');
Country::getCaptchaLocale('en');- The Core File utilities (read, write, copy, move, info).
- Class:
Tamedevelopers\Support\Capsule\File
- Class:
use Tamedevelopers\Support\Capsule\File;
// Create directory
File::makeDirectory(storage_path('logs'));
// Write & read
File::put(storage_path('logs/app.log'), 'Hello');
$content = File::get(storage_path('logs/app.log')); // 'Hello'
// Info
File::exists(storage_path('logs/app.log')); // true
File::size(storage_path('logs/app.log')); // int bytes
File::extension(storage_path('logs/app.log')); // 'log'
File::lastModified(storage_path('logs/app.log')); // timestamp
// Move/Copy/Delete
File::copy(storage_path('logs/app.log'), storage_path('logs/app_copy.log'));
File::move(storage_path('logs/app_copy.log'), storage_path('logs/app_moved.log'));
File::delete(storage_path('logs/app_moved.log'));
// List files
$files = File::files(storage_path('logs')); // array of SplFileInfo- Lightweight collection utilities.
- Class:
Tamedevelopers\Support\Collections\Collection - It's helper class can be called, using --
TameCollect() | tcollect()
- Class:
use Tamedevelopers\Support\Collections\Collection;
$users = new Collection([
['id' => 1, 'name' => 'Ada'],
['id' => 2, 'name' => 'Ben'],
['id' => 3, 'name' => 'Cee'],
]);
$users->isEmpty(); // false
$users->count(); // 3
$users->keys()->all(); // [0,1,2]
$users->values()->all(); // same as original but reindexed
// Keep only specific keys from an associative array
$profile = new Collection(['id'=>1,'name'=>'Ada','role'=>'admin']);
$profile->only('id', 'name')->all(); // ['id'=>1,'name'=>'Ada']
$profile->except('role')->all(); // ['id'=>1,'name'=>'Ada']
// Filtering
$even = (new Collection([1,2,3,4]))->filter(fn($v) => $v % 2 === 0)->all(); // [2,4]
// Merge/Chunk/Reverse
(new Collection([1,2]))->merge([3,4])->all(); // [1,2,3,4]
(new Collection(range(1,6)))->chunk(2)->all(); // [[1,2],[3,4],[5,6]]
(new Collection([1,2,3]))->reverse()->all(); // [3,2,1]- The Core Class/Wrapper For
PHPMailer- It's helper class can be called, using --
TameMail()
- It's helper class can be called, using --
Tamedevelopers\Support\Mail
Mail::to('email@example.com')
->subject('subject')
->body('<div>Hello Body</div>')
->send();- Accepts multiple emails as
array|string
Mail::to('email@example.com')
Mail::to(['email@example.com', 'email2@example.com'])
Mail::to('email@example.com', 'email2@example.com', 'email3@example.com')- Accepts multiple complex data as attachment as
array|string
Mail::attach(public_path("image.png"), 'New File Name')
Mail::attach(['path' => public_path("image.png"), 'as' => 'New name'])
Mail::attach([
['path' => public_path("image.png"), 'as' => 'New name'],
['path' => public_path("image2.zip"), 'as' => 'New name2'],
['path' => public_path("image3.jpeng"), 'as' => 'New name2'],
])- Accepts mandatory
string
Mail::subject('subject');- Accepts mandatory
string
Mail::subject('body');- Accepts [optional] closure/function
Mail::to('email@example.com')->send();
Mail::to('email@example.com')->send(function($reponse){
// $reponse
});- Accepts mandatory
boolDefault value is false- Clear buffers and send email in the background without waiting (But only to be used when using an API/Submitting via Ajax/Fetch or similar method of form submission)
Mail::to('email@example.com')
->body('<p>Body Text</p>')
->flush(true)
->send();- Takes two param as
string- [sourcePath] path to zip-directory
- [destination] path to save zip file
TameZip()->zip('app/Http', 'app.zip')- Takes two param as
string- [sourcePath] path of zip-file
- [destination] path to unzip-directory
TameZip()->unzip('newData.zip', base_path('public/zip'))- Takes two param as
string | boolean- [fileName] path of zip-file
- [unlink] Default is
trueunlinks file after download
TameZip()->download('newData.zip')- Require package to be installed -
composer require dompdf/dompdf- It's helper class can be called, using --
TamePDF()
- It's helper class can be called, using --
| options | Description |
|---|---|
content string |
HTML Content |
paper_size string |
Default is A4 --- letter | legal |
paper_type string |
Default is portrait --- landscape |
destination string |
Full path to where file has to be save public_path(invoice/file.pdf) |
By default it saves the pdf generated by timename to your project root [dir] |
| output string | Default is view --- save \| download |
| isRemoteEnabled bool | Default is false --- true If the content of html contains file/image link |
| title string | If the html content of PDF has no title, file name will automatically become the title |
| delete bool | Default is true --- false If output is view you can choose to delete file after preview |
Tamedevelopers\Support\PDF
$generate = strtotime('now') . '.pdf';
PDF::create([
'content' => '<h1>Hello World!</h1>',
'destination' => public_path("invoice/{$generate}"),
'output' => 'view',
]);- Takes one param as
string- [path] absolute path to PDF file
TamePDF()->read('invoice100.pdf')
// This will read the PDF to the browser- Class:
\Tamedevelopers\Support\Time- It's helper class can be called, using --
TameTime()
- It's helper class can be called, using --
- Get time date from class
| function name | Description |
|---|---|
sec() | getSec() |
Get seconds from time |
min() | getMin() |
Get minutes |
hour() | getHour() |
Get hour |
day() | getDay() |
Get days |
week() | getWeek() |
Get weeks |
month() | getMonth() |
Get months |
year() | getYear() |
Get years |
time() | getTime() |
Get time as int |
$time = new Time('now', 'Africa/Lagos');
[
$time4->time(),
$time4->sec(),
$time4->min(),
$time4->hour(),
$time4->day(),
$time4->week(),
$time4->month(),
$time4->year(),
]- Returns the Time Object with current timestamp of
now
$time->now()->format()- Accepts one param as (time)
int|string
$time->date("first day of this month")->toDateTimeString()- Thesame as
now()with timestamp oftoday
- Thesame as
now()with timestamp ofyesterday
$time->today();
$time->yesterday();- Accepts two parameter [format, date]
- only [format] is mandatory and returns the
string stamped formatted date
- only [format] is mandatory and returns the
$time->createFromFormat('m/d/Y h:ia', '24 Jan 2025 14:00:00');
// 01/25/2025 02:00am- Accepts one parameter [date]
$time->createFromDateString('24 Jan 2025 14:00:00');
// 2025-01-24 14:00:00.000000- Accepts two parameter [date, format]
- only [date] is mandatory and returns formated timestamp
$time->timestamp('24 Jan 2025 14:00:00');
// Output: 2025-01-24 14:00:00- Accept one parameter as [date]. Returns formated javascript timestamp
$time->toJsTimer('24 Jan 2025 14:00:00');
$time->jsTimer('24 Jan 2025 14:00:00');
// Output: Jan 24, 2025 14:00:00- Accepts two parameter [format, date] (none is required by default)
$time4->now()->format()
// 2025-09-15 05:07:07$time4->now()->toDateTimeString()
// 2025-09-13 22:00:00$time4->now()->toDateString()
// 2025-09-15$time4->now()->toTimeString()
// 05:09:01- Takes one paramater as
mode. Different between the given date a current time asnow- Return an array if [mode] is not found or value of
mode set
- Return an array if [mode] is not found or value of
| mode |
|---|
year | month | hour | mins | sec | days | weeks |
$time->date('last year december')->diff('month');
// Output: 1- Takes three paramater as
firstDate \| lastDate \| mode. Thesame as diff.
$time->diffBetween('last year december', 1737752400, 'weeks');
// Output: 4ago() or timeAgo(), Takes one paramater asmode
| mode |
|---|
full | short | duration | time | date | date_time | time_stamp |
$time->date('today')->timeAgo('full')
// 17 hours ago
// Output:
$time->date('today')->ago()
[
"full" => "4 hours ago"
"short" => "4h"
"duration" => 4
"time" => 1737752400
"date" => "24 Jan, 2025"
"date_time" => "24 Jan, 2025 10:01am"
"time_stamp" => "Jan 24, 2025 10:00:00"
]- Build date range according to value given
- Accepts (2) params
value and format
- Accepts (2) params
$time->range('0-10', 'D, M j')
// Output: returns class of Tamedevelopers\Support\Capsule\TimeHelper- To get the output, we need to call the TimeHelper format method
- The format() method takes two [optional] param.
start, yearas boolean
- The format() method takes two [optional] param.
$time->range('0-10')->format(true, true)
// Output: Thu, Jan 23 - Tue, Mar 4, 2025
$time->range('0-10')->format()
// Output: Tue, Mar 4- Can be called using boht [plural|singular] formats. To add more dates with already existing time.
$time4->now()->addMonth(3)->addSeconds(2)->addDays(2)->format()- Can be called using boht [plural|singular] formats. To subtract dates from already existing time.
$time4->now()->subMonth(3)->subSecond(2)->subDays(2)->format()Time::allTimezone();Time::setTimeZone('Pacific/Pago_Pago');Time::getTimeZone();- Http Request Helper
- It's helper class can be called, using --
TameRequest()|urlHelper() urlHelper()was older method name. We still keep for older project support.
- It's helper class can be called, using --
use Tamedevelopers\Support\Process\HttpRequest;
use Tamedevelopers\Support\Process\Http; // same as HttpRequest
$http = TameRequest();
[
Http::url(),
HttpRequest::server(),
HttpRequest::method(),
$http->full(),
$http->request(),
$http->referral(),
$http->http(),
$http->host(),
$http->path(),
]- Class:
\Tamedevelopers\Support\Cookie- It's helper class can be called, using --
TameCookie()
- It's helper class can be called, using --
| function name | Description |
|---|---|
| set() | Used to set cookie |
| get() | Used to get cookie |
| forget() | Used to expire cookie |
| expire() | Same as forget method |
| all() | Get all available cookie |
| has() | Cookie exists |
- Takes
7 param- Mandatory
$nameparam asstring - [optional]
$valueparam asstring | null - [optional]
$minutesparam asint | string - [optional]
$pathparam asstring | null - [optional]
$domainparam asstring | null - [optional]
$secureparam asbool | null - [optional]
$httponlyparam asbool | null
- Mandatory
use Tamedevelopers\Support\Cookie;
Cookie::set('cookie_name', 'value');
// TameCookie()->set('user', '__user');- Takes param as
string
Cookie::get('cookie_name');- Takes
3 param- Mandatory
$nameparam asstring - [optional]
$pathparam asstring | null - [optional]
$domainparam asstring | null
- Mandatory
Cookie::forget('cookie_name');- Takes param as
string- Returns
bool
- Returns
if(Cookie::has('cookie_name')){
// execute code
}- Password hashing and verify
use Tamedevelopers\Support\Hash;
bcrypt('testPassword');
// or
Hash::make('testPassword');
// $2y$10$Frh7yG3.qnGdQ9Hd8OK/y.aBWXFLiFD3IWqUjIWWodUhzIVF3DpT6Hash::make('secret');$oldPassword = "$2y$10$Frh7yG3.qnGdQ9Hd8OK/y.aBWXFLiFD3IWqUjIWWodUhzIVF3DpT6";
Hash::check('testPassword', $oldPassword);
// or native
password_verify('testPassword', $oldPassword);- Takes a param as
stringpath to asset file- Default [dir] is set to
public - It's helper class can be called, using --
tasset()
- Default [dir] is set to
use Tamedevelopers\Support\Asset;
Asset::asset('css/style.css');
// - Returns
// http://domain.com/assets/css/style.css- Takes three param as
string- It's helper class can be called, using --
config_asset()
- It's helper class can be called, using --
| params | Description |
|---|---|
| base_path | Path to file |
| cache | By Default is false. Tell method to include cache for each file |
| path_type | By Default is false, which uses absolute path for all files. While true will use relative path |
use Tamedevelopers\Support\Asset;
Asset::config('public/storage');
// - Returns
// http://domain.com/public/storage/[asset_file]
// config_asset('public');- By Default,
cacheis set tofalse- You'll see a link representation as
http://domain.com/[path_to_asset_file]?v=111111111
- You'll see a link representation as
Asset::config('storage', false);
// - Returns
// http://domain.com/storage/[asset_file]- or --
using helper method
// absolute path
config_asset('storage/main.js', true);
// Output: http://domain.com/storage/main.js?v=111111111
// relative url path
config_asset('storage/style.css', true, true);
// Output: /storage/style.css?v=111111111- Customer Laravel Blade Directives out of th box
- Uses the
config_asset()Default path as an entry level for root-level folder
| name | Description/Usage |
|---|---|
| @css | @css('css/app.css') |
| @js | @js('js/app.js') |
| @asset | @asset('images/logo.png', true, true) - Similar to tasset() |
| @svg | @svg('images/icon.svg', 'w-6 h-6 text-gray-500') - Takes path and custom class to be attached to the svg |
// if you've define root access inside the public folder
config_asset(
base_path: '/', // staring from project root[no default folder]
cache: true, // ability to invalidate and cache files
);then
<div>
@js('public/assets/ckeditor5/build/ckeditor.js');
@svg('resources/svg/icon.svg');
</div>- Basic usage with layout and sections
use Tamedevelopers\Support\View;
// Using a child view that extends a layout
$view = new View('tests.layout.home2', [
'title' => 'Homepage',
]);
echo $view->render();- Rendering multiple times safely (same instance)
$view = new View('tests.layout.home2', [
'title' => 'Homepage',
]);
// First render
echo $view->render();
// Second render (fresh render, no duplicated sections)
echo $view->render();- Render and capture as a string
$html = (new View('tests.layout.home2', ['title' => 'Homepage']))->render();- Supported extensions for views [only resolves filename]
- Similar Laravel blade syntax usage
$extensions = [
'.php', // Generic / CodeIgniter / CakePHP 4+
'.blade.php', // Laravel
'.twig', // Symfony/Twig generic
'.html.twig', // Symfony typical
];Samples
@extends('layout.partials.app')
@section('content')
<h1>Welcome to the Homepage!</h1>
@endsection
@include('layout.partials.footer', ['year' => 2025])
@yield('content')
@foreach($condition as $value)
@endforeach
@if($condition)
@else
@endif- It's helper class can be called, using --
tview()
// set base folder for views
// [optional], but when set - this will be the default path to look for view files.
tview()->base('tests');
// Create a view instance via helper and render
$view = tview('layout.home2', ['title' => 'Homepage']);
echo $view->render();
// One-liner (render via static call)
use Tamedevelopers\Support\View;
echo View::render('layout.home2', ['title' => 'Homepage']);- By default it use the default root as
.envpath, so mandatory to install vendor in root directory.
- To create an environment
.envfile. Create or ignore if exists
use Tamedevelopers\Support\Env;
Env::createOrIgnore()- To load the environment
.envfile- Takes optional param as
string$path
- Takes optional param as
use Tamedevelopers\Support\Env;
Env::load('path_to_env_folder')
// or
// Just as the name says. It'll load the `.env` file or fail with status code of 404. An error
Env::loadOrFail('path_to_env_folder')- Returns
true|false. Used to update env variables- It's helper class can be called, using --
env_update()
- It's helper class can be called, using --
| Params | Description |
|---|---|
| key | ENV key |
| value | ENV value |
| quote | true | false - Default is true (Allow quotes within value) |
| space | true | false - Default is false (Allow space between key and value) |
use Tamedevelopers\Support\Env;
Env::updateENV('DB_PASSWORD', 'newPassword');
env_update('DB_CHARSET', 'utf8', false);- Return instance of
Server- It's helper class can be called, using --
server()
- It's helper class can be called, using --
- Returns assoc arrays of Server
server\|domain
use Tamedevelopers\Support\Server;
Server::getServers();
// server()->getServers('domain');- With this helper you can be able to create your own custom config by extending the Default Config Method
- When using this model, make sure every of your php file returns an associative array for the key to work
| Params | Description |
|---|---|
| key | File array key |
| default | Default value if no data is found from the key |
| folder | Folder to search from and Default folder is config |
use Tamedevelopers\Support\Server;
Server::config('tests.lang.email', [], 'tests');- Create our own config to extends the default
/**
* Custom Language Handler
*
* @param mixed $key
* @return mixed
*/
function __lang($key){
// since the config only takes the filename follow by dot(.) and keyname
// then we can manually include additional folder-name followed by / to indicate that it's a folder
// then message.key_name
// To make this Laravel kind of language, we can add the default value to be returned as the key
// Do not forget that it starts from your root base directory, as the Package already has your root path
return Server()->config("en/message.{$key}", "message.{$key}", 'lang');
}
--- Structure of folder example
--- (d) for directory and (f) for file
Base/
├── Lang/
│ ├── en/
| | ────── message.php (File)
| | ────── error.php (File)
| |
│ ├── tr/
| | ────── message.php (File)
| | ────── error.php (File)
│ └── ...
└── ...- or --
using helpers
server()->config("en/message.{$key}", "message.{$key}", 'Lang');
server()->config("app.name");- The package enforces a valid application key in
.envasAPP_KEY. - If
APP_KEYis missing, invalid, or manually altered, the application will return HTTP 500 until a new key is generated via the API below.
use Tamedevelopers\Support\Capsule\Manager;
// Generate and persist a new key to .env and the fingerprint store
Manager::regenerate();
// Or ensure env is booted then enforce key (called internally)
Manager::startEnvIFNotStarted();- Valid key format is Laravel-style:
base64:followed by base64 of 32 random bytes.
- You can use the helper for convenience:
// Generate and persist a new key
tmanager()->regenerate();
// Optionally start env and enforce key
tmanager()->startEnvIFNotStarted();- Takes a
string|arrayas parameter- Register one or more folders containing your PHP files
- Automatically loads
Files|Classesin the folder and sub-folders
use Tamedevelopers\Support\AutoloadRegister;
// Single folder
AutoloadRegister::load('folder');
// Multiple folders
AutoloadRegister::load(['folder', 'folder2']);
// Or use the helper
autoload_register('folder');
autoload_register(['folder', 'folder2']);| function name | Description |
|---|---|
| env() | env method To get environment variable |
| server() | Return instance of (new Server) class |
| to_array() | array Convert value to array |
| to_object() | object Convert value to object |
| to_json() | string Convert value to json |
| function | Description |
|---|---|
| dump | Dump Data |
| dd | Dump and Die |
- @author Fredrick Peterson (Tame Developers)
- If you love this PHP Library, you can Buy Tame Developers a coffee
