Ultima Edição: 17/Nov/25

Funções e coisas que eu uso normalmente porém nunca lembro qual tenho rixa com o PHP então nunca vou lembrar nada disso

try/catch padrão pra retornar erros corretamente

try {

} 
catch(\Exception $e) {
        throw new \Exception($e->getMessage(), 400, $e);
    }

Executar procedure no arquivo Factory

   public function executaProcedure($valor){
        $procedure = new StoredProcedure($this->entityManager->getConnection(), 'NOME_DA_PROCEDURE');
        $procedure->addParam(new Param('NOME_DO_CAMPO', Param::PARAM_INPUT , $cdempresa    , Param::PARAM_TYPE_STR));
           $procedure->addParam(new Param('NOME_DO_OUTRO_CAMPO_DE_SAIDA', Param::PARAM_OUTPUT));
        $resultado = $procedure->execute();
        
        return $resultado;
    }

Lembrando é necessario colocar um argumento para váriaveis de saída também (Param::PARAM_OUTPUT) se houver

Executar query no arquivo factory

<?php
namespace Teknisa\FIS\Modules\Relatorios\Factories;
use Doctrine\ORM\EntityManager;

class PerfilClienteFactory
{
    protected $connection;
    
    public function __construct(EntityManager $entityManager){
        $this->connection = $entityManager->getConnection();
    }

    public function runQuery($valor) {
        $params = array(
            "CAMPO" => $valor
        );
       $query = "SELECT * FROM TABLE WHERE CAMPO == :CAMPO";
        $stmt = $this->connection->prepare($query);
        $stmt->execute($params);
        return $stmt->fetchAll();
    }
}

Gerar relatório

TeknisaCrud

Me disseram que normalmente é mais conveniente/confiável usar query sql normalmente. Porém já tem varias que usam então para referência:

Uma class que herda/extende TeknisaCrud pode usar os métodos para operações REST:

GET:

Dá pra usar:

parent::find($request, $response);

E.G:

class Test extends TeknisaCrud {
   public function findSaldoFiscal(DTO\Request\Filter $request, DTO\Response $response) {
        $this->dataSourceName = "saldempr_contctbl";
        $this->parameterBagColumns = array("P_CDCONTDESTINO", "P_CDEMPRESA", "P_DTSALDEMPR", "NRORG");
        parent::find($request, $response);
    }

}

Nesse exemplo, estamos fazendo um SELECT na tabela definida pelo dataSource, passada por meio do contexto local com o método dataSourceName:

  //saldempr_contctbl é o nome do datasource
  $this->dataSourceName = "saldempr_contctbl";

Como a query recebe váriaveis dinâmicas, usamos parameterBagColumns, passamos pra váriavel uma array dinâmica com todos valores ENVIADOS PELO FRONT-END, e ele vai botar na query.

  // "P_CDCONTDESTINO", "P_CDEMPRESA", "P_DTSALDEMPR", "NRORG", são os valores dinâmicos definidos na query.
  $this->parameterBagColumns = array("P_CDCONTDESTINO", "P_CDEMPRESA", "P_DTSALDEMPR", "NRORG");

Depois só chamar o método, e é por isso que espero que quem inventou OOP morra.


POST:

Dá pra usar:

parent::save($request, $response);

E.G:

   public function saveParamimpostofilImpostoContctbl(DTO\Request $request, DTO\Response $response) {

            $row = $request->getDataSet()->getRows()[0];
            $row['__is_new'] = $this->parametrosService->paramimpostofilIsNew($row);
            $this->dataSourceName = "paramimpostofil_imposto_contctbl";
            $this->dataSourceNameToSave = "paramimpostofil";
            parent::save($request, $response);
    }

Nesse exemplo, estamos fazendo um DELETE na tabela definida pelo dataSource, passada por meio do contexto local com o método dataSourceName:

  //implantsaldcome é o nome do datasource
  $this->dataSourceName = "implantsaldcome";

Aqui até onde eu vi, não se passa a array com as variáveis, mas sim se usa a array de primaryKeys……….

Depois só chamar o método, e é por isso que espero que quem inventou OOP morra (2x).


DELETE:

Dá pra usar:

parent::delete($request, $response);

E.G:

class Test extends \Teknisa\CTB\Controllers\TeknisaCrud {
   public function deleteSaldoComercial (DTO\Request $request, DTO\Response $response) {
            $this->dataSourceName = "implantsaldcome";
            parent::delete($request, $response);
        }catch (\Exception $e) {
            $response->setError(new Error($e->getMessage() , 500));
        }
}

Nesse exemplo, estamos fazendo um DELETE na tabela definida pelo dataSource, passada por meio do contexto local com o método dataSourceName:

  //implantsaldcome é o nome do datasource
  $this->dataSourceName = "implantsaldcome";

Aqui até onde eu vi, não se passa a array com as variáveis, mas sim se usa a array de primaryKeys……….

Depois só chamar o método, e é por isso que espero que quem inventou OOP morra (3x).

Coisas de data

Pegar úlitmo dia do mês

Só usar o método date(), e usar como argumentos o formato ‘d/m/y’ e ‘last day of $ano-$mes-dia’. A data tem que estar formatada com hifen entre membros. ~O PHP é tão estúpido que chega a ser util…….~

$ultimo_dia = date('d/m/Y', strtotime("last day of $ano-$mes-$dia"));