hardjunior / mini-frame
PHP图像裁剪和缩略图缓存管理器,数据层是数据库的持久抽象组件,PDO优化器使您轻松创建网站标签、开放图和Twitter卡片,还包含Composer路由MVC测试,快速且极其简单。创建和管理您的路由
Requires
- php: >=7.4
- ext-fileinfo: *
- ext-gd: *
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
README
# Cropper
### Highlights
- Simple Thumbnail Creator (Simples criador de miniaturas)
- Cache optimization per dimension (Otimização em cache por dimensão)
- Media Control by Filename (Contrôle de mídias por nome do arquivo)
- Cache cleanup by filename and total (Limpeza de cache por nome de arquivo e total)
- Composer ready and PSR-2 compliant (Pronto para o composer e compatível com PSR-2)
## Installation
Cropper is available via Composer:
Cropper is available via Composer:
```bash
"hardjunior/cropper": "1.3.*"
或者运行
composer require hardjunior/cropper
文档
这只有两种方法可以完成所有工作。您只需调用make来创建或使用任何大小的缩略图,或调用flush来释放文件或整个文件夹的缓存。hardjunior Cropper就是这样工作的
仅有两种方法可以完成所有工作。您只需调用make来创建或使用任何大小的缩略图,或调用flush来释放文件或整个文件夹的缓存。hardjunior Cropper就是这样工作的
创建缩略图
<?php require __DIR__ . "/../src/Cropper.php"; $c = new \HardJunior\cropper\Cropper("patch/to/cache"); echo "<img src='{$c->make("images/image.jpg", 500)}' alt='Happy Coffee' title='Happy Coffee'>"; echo "<img src='{$c->make("images/image.jpg", 500, 300)}' alt='Happy Coffee' title='Happy Coffee'>";
清除缓存
<?php require __DIR__ . "/../src/Cropper.php"; $c = new \HardJunior\cropper\Cropper("patch/to/cache"); //flush by filename $c->flush("images/image.jpg"); //flush cache folder $c->flush();
支持
安全:如果您发现任何与安全相关的问题,请通过电子邮件发送至hardjunior1@gmail.com,而不是使用问题跟踪器。
如果您发现任何与安全相关的问题,请发送电子邮件至hardjunior1@gmail.com。
谢谢
# Data Layer @hardjunior
###### The data layer is a persistent abstraction component of your database that PDO has prepared instructions for performing common routines such as registering, reading, editing, and removing data.
O data layer é um componente para abstração de persistência no seu banco de dados que usa PDO com prepared statements para executar rotinas comuns como cadastrar, ler, editar e remover dados.
### Highlights
- Easy to set up (Fácil de configurar)
- Total CRUD asbtration (Asbtração total do CRUD)
- Create safe models (Crie de modelos seguros)
- Composer ready (Pronto para o composer)
- PSR-2 compliant (Compatível com PSR-2)
## Installation
Data Layer is available via Composer:
```bash
"hardjunior/datalayer": "1.1.*"
或者运行
composer require hardjunior/datalayer
文档
有关如何使用数据层的详细信息,请参阅组件目录中的示例文件夹中的详细信息
有关如何使用数据层的更多详细信息,请参阅组件目录中的示例文件夹中的详细信息
连接
要开始使用数据层,您需要连接到数据库(MariaDB / MySql)。有关更多连接,请参阅PHP.net上的PDO连接手册
要开始使用数据层,我们需要连接到您的数据库。要查看可能的连接,请访问PHP.net上的PDO连接手册
define("DATA_LAYER_CONFIG", [ "driver" => "mysql", "host" => "localhost", "port" => "3306", "dbname" => "datalayer_example", "username" => "root", "passwd" => "", "options" => [ PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, PDO::ATTR_CASE => PDO::CASE_NATURAL ] ]);
您的模型
数据层基于MVC结构,使用层超级类型和活动记录设计模式。要消费它,需要创建您的表格模型并继承数据层。
数据层基于MVC结构,使用层超级类型和活动记录设计模式。要消费它,需要创建您的表格模型并继承数据层。
class User extends DataLayer { /** * User constructor. */ public function __construct() { //string "TABLE_NAME", array ["REQUIRED_FIELD_1", "REQUIRED_FIELD_2"], string "PRIMARY_KEY", bool "TIMESTAMPS" parent::__construct("users", ["first_name", "last_name"]); } }
查找
<?php use Example\Models\User; $model = new User(); //find all users $users = $model->find()->fetch(true); //find all users limit 2 $users = $model->find()->limit(2)->fetch(true); //find all users limit 2 offset 2 $users = $model->find()->limit(2)->offset(2)->fetch(true); //find all users limit 2 offset 2 order by field ASC $users = $model->find()->limit(2)->offset(2)->order("first_name ASC")->fetch(true); //looping users foreach ($users as $user) { echo $user->first_name; } //find one user by condition $user = $model->find("first_name = :name", "name=Ivamar")->fetch(); echo $user->first_name; //find one user by two conditions $user = $model->find("first_name = :name AND last_name = :last", "name=Ivamar&last=Júnior")->fetch(); echo $user->first_name . " " . $user->first_last;
findById
<?php use Example\Models\User; $model = new User(); $user = $model->findById(2); echo $user->first_name;
安全参数
请参阅find_example.php示例和模型类
请参阅find_example.php示例和模型类
$params = http_build_query(["name" => "Ivamar & Junior"]); $company = (new Company())->find("name = :name", $params); var_dump($company, $company->fetch());
连接方法
请参阅find_example.php示例和模型类
请参阅find_example.php示例和模型类
$addresses = new Address(); $address = $addresses->findById(22); //get user data to this->user->[all data] $address->user(); var_dump($address);
计数
<?php use Example\Models\User; $model = new User(); $count = $model->find()->count();
保存创建
<?php use Example\Models\User; $user = new User(); $user->first_name = "Ivamar"; $user->last_name = "Júnior"; $userId = $user->save();
保存更新
<?php use Example\Models\User; $user = (new User())->findById(2); $user->first_name = "Ivamar"; $userId = $user->save();
销毁
<?php use Example\Models\User; $user = (new User())->findById(2); $user->destroy();
失败
<?php use Example\Models\User; $user = (new User())->findById(2); if($user->fail()){ echo $user->fail()->getMessage(); }
自定义数据方法
class User{ //... public function fullName(): string { return "{$this->first_name} {$this->last_name}"; } public function document(): string { return "Restrict"; } } echo $this->full_name; //Ivamar júnior echo $this->document; //Restrict
支持
安全:如果您发现任何与安全相关的问题,请通过电子邮件发送至hardjunior1@gmail.com,而不是使用问题跟踪器。
如果您发现任何与安全相关的问题,请发送电子邮件至hardjunior1@gmail.com。
谢谢
# Optimizer @HardJunior
### Highlights
- Simple composer for dynamic data (Compositor simples para dados dinâmicos)
- Author and publisher settings for Facebook (Configuração de autor e publicador para Facebook)
- Quickly configure TwitterCard data for sharing cards (Configure rapidamente os dados TwitterCard para cartões de compartilhamento)
- Quickly configure OpenGraph data for social sharing. (Configure rapidamente os dados OpenGraph para compartilhamento social.)
- Add FacebookAdmins or FacebookAppId and everything is ready (Adiciona FacebookAdmins ou FacebookAppId e tudo fica pronto)
- Composer ready and PSR-2 compliant (Pronto para o composer e compatível com PSR-2)
## Installation
Optimizer is available via Composer:
```bash
"hardjunior/optimizer": "2.0.*"
或者运行
composer require hardjunior/optimizer
文档
有关如何使用优化器的详细信息,请参阅组件目录中的示例文件夹中的详细信息
有关如何使用优化器的更多详细信息,请参阅组件目录中的示例文件夹中的详细信息
@optimize
<?php require __DIR__ . "/../vendor/autoload.php"; $op = new \HardJunior\Optimizer\Optimizer(); echo $op->optimize( "Optimizer Happy and @hardjunior", "Is a compact and easy-to-use tag creator to optimize your site", "https://hardjunior.ddns.net/hardjunior/optimizer/example/", "https://hardjunior.ddns.net/uploads/images/2017/11/curso-de-html5-preparando-ambiente-de-trabalho-aula-02-1511276983.jpg" )->render();
@optimize结果
<title>Optimizer Happy and @hardjunior</title> <meta property="og:url" content="https://hardjunior.ddns.net/hardjunior/optimizer/example/"/> <meta property="og:title" content="Optimizer Happy and @hardjunior"/> <meta property="og:image" content="https://hardjunior.ddns.net/uploads/images/2017/11/curso-de-html5-preparando-ambiente-de-trabalho-aula-02-1511276983.jpg"/> <meta property="og:description" content="Is a compact and easy-to-use tag creator to optimize your site"/> <meta name="twitter:url" content="https://hardjunior.ddns.net/hardjunior/optimizer/example/"/> <meta name="twitter:title" content="Optimizer Happy and @hardjunior"/> <meta name="twitter:image" content="https://hardjunior.ddns.net/uploads/images/2017/11/curso-de-html5-preparando-ambiente-de-trabalho-aula-02-1511276983.jpg"/> <meta name="twitter:description" content="Is a compact and easy-to-use tag creator to optimize your site"/> <meta name="robots" content="index, follow"/> <meta name="description" content="Is a compact and easy-to-use tag creator to optimize your site"/> <meta itemprop="url" content="https://hardjunior.ddns.net/hardjunior/optimizer/example/"/> <meta itemprop="name" content="Optimizer Happy and @hardjunior"/> <meta itemprop="image" content="https://hardjunior.ddns.net/uploads/images/2017/11/curso-de-html5-preparando-ambiente-de-trabalho-aula-02-1511276983.jpg"/> <meta itemprop="description" content="Is a compact and easy-to-use tag creator to optimize your site"/> <link rel="canonical" href="https://hardjunior.ddns.net/hardjunior/optimizer/example/"/>
@publisher
<?php require __DIR__ . "/../vendor/autoload.php"; $op = new \HardJunior\Optimizer\Optimizer(); echo $op->publisher( "Ivamar", "hardjunior" )->render();
@publisher结果
<meta property="article:publisher" content="https://#/hardjunior1"/> <meta property="article:author" content="https://#/hardjunior1"/>
@twitterCard
<?php require __DIR__ . "/../vendor/autoload.php"; $op = new \HardJunior\Optimizer\Optimizer(); echo $op->twitterCard( "@hardjunior", "@hardjunior", "hardjunior.ddns.net", "summary_large_image" )->render();
@twitterCard结果
<meta name="twitter:site" content="@ivamarjunior"/> <meta name="twitter:domain" content="hardjunior.ddns.net"/> <meta name="twitter:creator" content="@ivamarjunior"/> <meta name="twitter:card" content="summary_large_image"/>
@openGraph
<?php require __DIR__ . "/../vendor/autoload.php"; $op = new \HardJunior\Optimizer\Optimizer(); echo $op->openGraph( "hardjunior", "pt_BR", "article" )->render();
@openGraph结果
<meta property="og:type" content="article"/> <meta property="og:site_name" content="hardjunior"/> <meta property="og:locale" content="pt_BR"/>
支持
安全:如果您发现任何与安全相关的问题,请通过电子邮件发送至hardjunior1@gmail.com,而不是使用问题跟踪器。
如果您发现任何与安全相关的问题,请发送电子邮件至hardjunior1@gmail.com。
谢谢
# Router @hardjunior
### Highlights
- Router class with all RESTful verbs (Classe router com todos os verbos RESTful)
- Optimized dispatch with total decision control (Despacho otimizado com controle total de decisões)
- Requesting Spoofing for Local Verbalization (Falsificador (Spoofing) de requisição para verbalização local)
- It's very simple to create routes for your application or API (É muito simples criar rotas para sua aplicação ou API)
- Trigger and data carrier for the controller (Gatilho e transportador de dados para o controloador)
- Composer ready and PSR-2 compliant (Pronto para o composer e compatível com PSR-2)
## Installation
Router is available via Composer:
```bash
"hardjunior/router": "1.0.*"
或者运行
composer require hardjunior/router
文档
有关如何使用路由器的详细信息,请参阅组件目录中的示例文件夹中的详细信息。要使用路由器,您需要重定向您的路由路由导航(index.php),所有流量都必须在此处理。以下示例显示了如何操作
有关如何使用路由器的详细信息,请查看组件目录下的示例文件夹中的详细说明。要使用路由器,需要将您的导航重定向到路由根文件(index.php),所有流量都应在那里处理。以下示例展示了如何
Apache
RewriteEngine On
#Options All -Indexes
## ROUTER WWW Redirect.
#RewriteCond %{HTTP_HOST} !^www\. [NC]
#RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
## ROUTER HTTPS Redirect
#RewriteCond %{HTTP:X-Forwarded-Proto} !https
#RewriteCond %{HTTPS} off
#RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# ROUTER URL Rewrite
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?route=/$1 [L,QSA]
Nginx
location / {
if ($script_filename !~ "-f"){
rewrite ^(.*)$ /index.php?route=/$1 break;
}
}
路由
<?php require __DIR__ . "/../vendor/autoload.php"; use hardjunior\Router\Router; $router = new Router("https://www.youdomain.com"); /** * routes * The controller must be in the namespace Test\Controller * this produces routes for route, route/$id, route/{$id}/profile, etc. */ $router->namespace("Test"); $router->get("/route", "Controller:method"); $router->post("/route/{id}", "Controller:method"); $router->put("/route/{id}/profile", "Controller:method"); $router->patch("/route/{id}/profile/{photo}", "Controller:method"); $router->delete("/route/{id}", "Controller:method"); /** * group by routes and namespace * this produces routes for /admin/route and /admin/route/$id * The controller must be in the namespace Dash\Controller */ $router->group("admin")->namespace("Dash"); $router->get("/route", "Controller:method"); $router->post("/route/{id}", "Controller:method"); /** * Group Error * This monitors all Router errors. Are they: 400 Bad Request, 404 Not Found, 405 Method Not Allowed and 501 Not Implemented */ $router->group("error")->namespace("Test"); $router->get("/{errcode}", "Controller:notFound"); /** * This method executes the routes */ $router->dispatch(); /* * Redirect all errors */ if ($router->error()) { $router->redirect("/error/{$router->error()}"); }
命名
<?php require __DIR__ . "/../vendor/autoload.php"; use hardjunior\Router\Router; $router = new Router("https://www.youdomain.com"); /** * routes * The controller must be in the namespace Test\Controller */ $router->namespace("Test")->group("name"); $router->get("/", "Name:home", "name.home"); $router->get("/hello", "Name:hello", "name.hello"); $router->get("/redirect", "Name:redirect", "name.redirect"); /** * This method executes the routes */ $router->dispatch(); /* * Redirect all errors */ if ($router->error()) { $router->redirect("name.hello"); }
命名控制器示例
class Name { public function __construct($router) { $this->router = $router; } public function home(): void { echo "<h1>Home</h1>"; echo "<p>", $this->router->route("name.home"), "</p>"; echo "<p>", $this->router->route("name.hello"), "</p>"; echo "<p>", $this->router->route("name.redirect"), "</p>"; } public function redirect(): void { $this->router->redirect("name.hello"); } }
命名参数
//route $router->get("/params/{category}/page/{page}", "Name:params", "name.params"); //$this->route = return URL //$this->redirect = redirect URL $this->router->route("name.params", [ "category" => 22, "page" => 2 ]); //result https://www.{}/name/params/22/page/2 $this->router->route("name.params", [ "category" => 22, "page" => 2, "argument1" => "most filter", "argument2" => "most search" ]); //result https://www.{}/name/params/22/page/2?argument1=most+filter&argument2=most+search
可调用
/** * GET httpMethod */ $router->get("/", function ($data) { $data = ["realHttp" => $_SERVER["REQUEST_METHOD"]] + $data; echo "<h1>GET :: Spoofing</h1>", "<pre>", print_r($data, true), "</pre>"; }); /** * POST httpMethod */ $router->post("/", function ($data) { $data = ["realHttp" => $_SERVER["REQUEST_METHOD"]] + $data; echo "<h1>POST :: Spoofing</h1>", "<pre>", print_r($data, true), "</pre>"; }); /** * PUT spoofing and httpMethod */ $router->put("/", function ($data) { $data = ["realHttp" => $_SERVER["REQUEST_METHOD"]] + $data; echo "<h1>PUT :: Spoofing</h1>", "<pre>", print_r($data, true), "</pre>"; }); /** * PATCH spoofing and httpMethod */ $router->patch("/", function ($data) { $data = ["realHttp" => $_SERVER["REQUEST_METHOD"]] + $data; echo "<h1>PATCH :: Spoofing</h1>", "<pre>", print_r($data, true), "</pre>"; }); /** * DELETE spoofing and httpMethod */ $router->delete("/", function ($data) { $data = ["realHttp" => $_SERVER["REQUEST_METHOD"]] + $data; echo "<h1>DELETE :: Spoofing</h1>", "<pre>", print_r($data, true), "</pre>"; }); $router->dispatch();
表单欺骗
此示例展示了如何从应用程序访问路由(PUT、PATCH、DELETE)。您可以在示例文件夹中查看更多详细信息。请注意_method字段,它可能是隐藏类型。
此示例展示了如何从应用程序访问路由(PUT、PATCH、DELETE)。您可以在示例文件夹中查看更多详细信息。请注意_method字段,它可能是隐藏类型。
<form action="" method="POST"> <select name="_method"> <option value="POST">POST</option> <option value="PUT">PUT</option> <option value="PATCH">PATCH</option> <option value="DELETE">DELETE</option> </select> <input type="text" name="first_name" value="Ivamar"/> <input type="text" name="last_name" value="Junior"/> <input type="text" name="email" value="hardjunior1@gmail.com"/> <button>hardjunior</button> </form>
PHP cURL 示例
<?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https:///hardjunior/router/exemple/spoofing/", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "PUT", CURLOPT_POSTFIELDS => "first_name=Ivamar&last_name=Junior&email=hardjunior1%40gmail.com", CURLOPT_HTTPHEADER => array( "Cache-Control: no-cache", "Content-Type: application/x-www-form-urlencoded" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; }
支持
安全:如果您发现任何与安全相关的问题,请通过电子邮件发送至hardjunior1@gmail.com,而不是使用问题跟踪器。
如果您发现任何与安全相关的问题,请发送电子邮件至hardjunior1@gmail.com。
谢谢
# Uploader @HardJunior
### Highlights
- Image simple upload (Simples envio de imagems)
- File simple upload (Simples envio de arquivos)
- Media simple upload (Simples envio de midias)
- Managing directories with date schemas (Gestão de diretórios com esquema de datas)
- Validation of images, files and media by mime-types (Valida de imagens, arquivos e mídias por mime-types)
- Composer ready and PSR-2 compliant (Pronto para o composer e compatível com PSR-2)
## Installation
Uploader is available via Composer:
```bash
"hardjunior/uploader": "1.0.*"
或者运行
composer require hardjunior/uploader
文档
有关如何使用上传的详细信息,请查看组件目录下的示例文件夹。其中包含每个类的使用示例。hardjunior 上传器的工作方式如下
有关如何使用上传的详细信息,请查看组件目录下的示例文件夹。其中包含每个类的使用示例。hardjunior 上传器的工作方式如下
上传图片
<?php require __DIR__ . "/../vendor/autoload.php"; $image = new HardJunior\Uploader\Image("uploads", "images", 600); if ($_FILES) { try { $upload = $image->upload($_FILES['image'], $_POST['name']); echo "<img src='{$upload}' width='100%'>"; } catch (Exception $e) { echo "<p>(!) {$e->getMessage()}</p>"; } }
上传文件
<?php require __DIR__ . "/../vendor/autoload.php"; $file = new HardJunior\Uploader\File("uploads", "files"); if ($_FILES) { try { $upload = $file->upload($_FILES['file'], $_POST['name']); echo "<p><a href='{$upload}' target='_blank'>@HardJunior</a></p>"; } catch (Exception $e) { echo "<p>(!) {$e->getMessage()}</p>"; } }
上传媒体
<?php require __DIR__ . "/../vendor/autoload.php"; $media = new HardJunior\Uploader\Media("uploads", "medias"); if ($_FILES) { try { $upload = $media->upload($_FILES['file'], $_POST['name']); echo "<p><a href='{$upload}' target='_blank'>@HardJunior</a></p>"; } catch (Exception $e) { echo "<p>(!) {$e->getMessage()}</p>"; } }
按文件类型上传(发送)
<?php require __DIR__ . "/../vendor/autoload.php"; $postscript = new HardJunior\Uploader\Send("uploads", "postscript", ["application/postscript"]); if ($_FILES) { try { $upload = $postscript->upload($_FILES['file'], $_POST['name']); echo "<p><a href='{$upload}' target='_blank'>@HardJunior</a></p>"; } catch (Exception $e) { echo "<p>(!) {$e->getMessage()}</p>"; } }
批量上传
require __DIR__ . "/../vendor/autoload.php"; $image = new HardJunior\Uploader\Image("uploads", "images"); try { foreach ($image->multiple("file", $_FILES) as $file) { $image->upload($file, "image-" . $file["name"], 1200); } echo "Success!"; } catch (Exception $e) { echo "<p>(!) {$e->getMessage()}</p>"; }
支持
安全:如果您发现任何与安全相关的问题,请通过电子邮件发送至hardjunior1@gmail.com,而不是使用问题跟踪器。
如果您发现任何与安全相关的问题,请发送电子邮件至hardjunior1@gmail.com。
谢谢
# Email @HardJunior
### Highlights
- Envio email utilizando framework phpmailer
- Composer ready and PSR-2 compliant (Pronto para o composer e compatível com PSR-2)
## Installation
Uploader is available via Composer:
```bash
"hardjunior/email": "1.0.*"
或者运行
composer require hardjunior/email
文档
有关如何使用电子邮件的详细信息,请查看组件目录下的示例文件夹。其中包含每个类的使用示例。hardjunior 电子邮件的工作方式如下
有关如何使用电子邮件的详细信息,请查看组件目录下的示例文件夹。其中包含每个类的使用示例。hardjunior 电子邮件的工作方式如下
发送电子邮件
Array Mail
host - dominio
port - porta de acesso
user - usuario
passwd - password
(Default)
from_name - Nome remetente
from_email - Email remente
A executar com template
$email = new Email();
$email->add(
"Recupere sua senha | ". site("name"),
$this->view->render("emails/recover",[
"user"=>$user,
"link"=>$this->router->route("web.reset",[
"email"=>$user->email,
"forget"=>$user->forget
])
]),
"{$user->first_name} {$user->last_name}",
$user->email
)->send();
支持
安全:如果您发现任何与安全相关的问题,请通过电子邮件发送至hardjunior1@gmail.com,而不是使用问题跟踪器。
如果您发现任何与安全相关的问题,请发送电子邮件至hardjunior1@gmail.com。
谢谢