main
Robert 1 month ago
parent 6ef9bb4805
commit 1e7fa2d894
  1. 2
      .gitignore
  2. 8
      protected/src/composer.json
  3. 31
      protected/src/controllers/app/home_ctrl.php
  4. 4
      protected/src/outputs/app/home/val_tests_out.php
  5. 43
      protected/src/services/on_database_test.php
  6. 21
      protected/src/services/on_dotenv.php
  7. 2
      protected/src/views/twig/app/val_tests.html.twig

2
.gitignore vendored

@ -8,3 +8,5 @@ protected/logs
protected/src/composer.lock protected/src/composer.lock
*.swp *.swp
*.log *.log
env
.env

@ -1,9 +1,15 @@
{ {
"config": {
"platform": {
"php": "8.4"
}
},
"require": { "require": {
"twig/twig": "^3.0", "twig/twig": "^3.0",
"liquid/liquid": "^1.4", "liquid/liquid": "^1.4",
"ezyang/htmlpurifier": "^4.18", "ezyang/htmlpurifier": "^4.18",
"twilio/sdk": "^8.7", "twilio/sdk": "^8.7",
"firebase/php-jwt": "^6.11" "firebase/php-jwt": "^6.11",
"vlucas/phpdotenv": "^5.6"
} }
} }

@ -9,9 +9,10 @@ declare(strict_types = 1);
*/ */
namespace Project\controllers\app; namespace Project\controllers\app;
use \CodeHydrater\base_controller; use CodeHydrater\base_controller;
use \CodeHydrater\enums\view_type as ViewType; use CodeHydrater\enums\view_type as ViewType;
use \CodeHydrater\bootstrap\use_iol as IOL; use CodeHydrater\bootstrap\use_iol as IOL;
use CodeHydrater\bootstrap\registry as Registry;
/** /**
* Description of home_ctrl URL Route: /FOLDER/FILE/METHOD * Description of home_ctrl URL Route: /FOLDER/FILE/METHOD
@ -35,6 +36,30 @@ class home_ctrl extends base_controller {
return $this->response; return $this->response;
} }
public function di_test() {
Registry::get('di')->get('dotenv');
$dotenv = \Dotenv\Dotenv::createImmutable(CodeHydrater_PROJECT);
$dotenv->load();
$dotenv->required(['DB_HOST', 'DB_USER', 'DB_PASSWORD'])->notEmpty();
$container = Registry::get('di');
$container->set(\Database::class, function() {
return new \Database(host: $_ENV['DB_HOST'],
name: $_ENV['DB_NAME'],
user: $_ENV['DB_USER'],
password: $_ENV['DB_PASSWORD'],
);
});
$repository = $container->get(\Repository::class);
$data = $repository->getAll();
var_dump($data);
return $this->response;
}
public function twig() { public function twig() {
$this->view->set('twig_data', ['name' => "John Doe"]); $this->view->set('twig_data', ['name' => "John Doe"]);
$content = $this->view->fetch($this, "app/test", ViewType::TWIG); $content = $this->view->fetch($this, "app/test", ViewType::TWIG);

@ -20,8 +20,8 @@ class val_tests_out {
$form_builder = new Form(); $form_builder = new Form();
$form_builder->set_escape(false); $form_builder->set_escape(false);
$form_builder->open(options: ['autocomplete'=>'off', 'class'=>'needs-validation was-validated']); $form_builder->open(options: ['autocomplete'=>'off', 'class'=>'needs-validation was-validated']);
$form_builder->fieldset_open(['style'=>'width: 200px;']); $form_builder->fieldset_open(['style'=>'width: 250px;', 'class'=>'border rounded-3 p-3']);
$form_builder->legend("News Letter"); $form_builder->legend("News Letter", ['class'=>'float-none w-auto px-3']);
$data = $form_builder->build_group($input); $data = $form_builder->build_group($input);
$form_builder->open_div(['class'=>$div_class]); $form_builder->open_div(['class'=>$div_class]);
$form_builder->submit("go", ['class'=>'btn btn-primary']); $form_builder->submit("go", ['class'=>'btn btn-primary']);

@ -0,0 +1,43 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts <Bob_586@Yahoo.com>
* @copyright (c) 2025, Robert Strutts
* @license MIT
*/
class Database
{
public function __construct(private string $host,
private string $name,
private string $user,
private string $password)
{
}
public function getConnection(): PDO
{
$dsn = "mysql:host={$this->host};dbname={$this->name}";
return new PDO($dsn, $this->user, $this->password);
}
}
class Repository
{
public function __construct(private Database $database)
{
}
public function getAll(): array
{
$pdo = $this->database->getConnection();
$stmt = $pdo->query("SELECT * FROM tblproduct");
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}

@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts <Bob_586@Yahoo.com>
* @copyright (c) 2025, Robert Strutts
* @license MIT
*/
use CodeHydrater\bootstrap\registry as Reg;
Reg::get('di')->register('dotenv', function() {
if (! Reg::get('loader')->is_loaded('Dotenv')) {
Reg::get('loader')->add_namespace("Dotenv", CodeHydrater_PROJECT. "/vendor/vlucas/phpdotenv/src");
Reg::get('loader')->add_namespace("PhpOption", CodeHydrater_PROJECT. "/vendor/phpoption/phpoption/src/PhpOption");
Reg::get('loader')->add_namespace("GrahamCampbell\\ResultType", CodeHydrater_PROJECT."/vendor/graham-campbell/result-type/src");
}
});

@ -21,5 +21,5 @@
{{ form_builder|raw }} {{ form_builder|raw }}
{% endif %} {% endif %}
<br>
</memory> </memory>
Loading…
Cancel
Save