por Sândler

Variavel php assumir condição de operador lógico

dezembro 7, 2017 em Php por Sândler

/*

* bcadd = adição

* bcsub = subtração

* bcmul = multiplicação

* bcdiv = divisão

*/

$operador = ‘add’;

$val1 = 10;

$val2 = 10;

$result = call_user_func(‘bc’.$operador,$val1,$val2);

por Sândler

Banco de Dados Dinâmico e Multiplos em Cakephp

dezembro 7, 2017 em CakePhp, Php por Sândler

APLICAÇÃO NA CONFIG DATABASE

Os nomes dos bancos são definidos em:  /app/config/database.php

EXAMPLE Multibanco

public $pro = array(‘datasource’ => ‘Database/Mysql’,
‘persistent’ => false,
‘host’ => ’127.0.0.1′,
‘login’ => ‘root’,
‘password’ => ”,
‘database’ => ‘db_pro’,
‘encoding’ => ‘latin1′);

public $test = array(‘datasource’ => ‘Database/Mysql’,
‘persistent’ => false,
‘host’ => ’127.0.0.1′,
‘login’ => ‘root’,
‘password’ => ”,
‘database’ => ‘db_test’,
‘encoding’ => ‘latin1′);

function __construct()
 {
     $this->default = $this->pro;
     $localhost = explode( ':', $_SERVER['HTTP_HOST'] );
     $arrRequest = explode('/',$_SERVER['REQUEST_URI']);
     $nameController = ($localhost[0] == 'localhost')? $arrRequest[3] :$arrRequest[2];//PEGA CONTROLLER
     switch ($nameController) {
        case 'users':
        case 'profiles':
        case 'logs':
        case 'companies':
              $this->default = $this->pro;
        break;
        default:
              $this->default = $this->test; 
        break;
} 

 

 

 

APLICAÇÃO DA CONTROLLER OU MODEL

TESTE 1

So, inside your Model, you would use the useDbConfig Attribute:

classExampleextendsAppModel{public $useDbConfig ='test';}

Inside your Controller, simply use:

$this->ModelName->useDbConfig ='test';

Thats all.

TESTE 2

I would use Model::setDataSource() rather than just setting the database config var. This is because there are other possible changes that come with changing the datasource:

$this->Model->setDataSource('test');


Reference: https://book.cakephp.org/2.0/en/models/model-attributes.html



por Sândler

Diferença entre $ e $$ em php

dezembro 7, 2017 em Php por Sândler

Diferença entre $ e $$ em php

$a representa uma variável

Quando utilizarmos $$a, o php pega o conteúdo de $a e representa como uma variável.

Exemplo:

$teste ="bom dia";
$a ="teste";
echo $$a;

Resposta será: bom dia

 

Referencehttps://stackoverflow.com/questions/11504335/what-is-the-difference-between-a-and-a-in-php

por Sândler

O que é branch, trunk e tag (GIT)

agosto 15, 2017 em github por Sândler

Trunk

É o principal tronco de desenvolvimento, seguindo desde o início do projeto até o presente. É nele que o projeto deve se basear sempre. Normalmente é gerido por um desenvolvedor e recebe merges após aprovação de alguém que é responsável pelo projeto. Não faz sentido existir mais do que um trunk.

Branch

É um galho da árvore de desenvolvimento. É uma cópia do código derivado de um certo ponto do trunk que é utilizado para a aplicação de mudanças no código, preservando a integridade do código no trunk. Se as mudanças funcionam de acordo com o planejado, elas geralmente são mescladas de volta para o tronco principal (trunk). É muito usado para experimentos e para desenvolvimentos paralelos.

É usado o tempo todo. Apesar do trunk ser o repositório principal, todo o desenvolvimento costuma ser feito em cima dos galhos locais ou remotos dependendo do fluxo de trabalho escolhido. É comum chamarmos o branch de versão de trabalho. É um rascunho que pode ser guardado para depois, para jogar fora, permanecer privado para um desenvolvedor ou grupo específico sem entrar no projeto.

Onde existem muitos branches pode criar dificuldades para executar o merge, por isso cada vez mais sistemas de controle de versão distribuídos estão fazendo cada vez mais sucesso em projetos muito ativos e principalmente descentralizados. Por isso é comum não incentivar branches descontroladamente quando se usa SVN.

Em muitos casos o branch funciona como uma futura versão.

Tag

É um marcador de um estado do código em um determinado momento. É um ponto no tempo no trunk ou em um branch que você deseja preservar. As duas principais razões para a preservação seriam:

  • este é um grande lançamento do software, se alfa, beta, RC ou RTM;
  • este é o ponto mais estável do software antes de aplicar revisões importantes sobre o trunk.

Não é comum trabalhar em cima de uma tag. É criado um marco que pode ser acessado facilmente. Quando encontrar um bug em versão antiga que precisa de uma solução, é fácil criar um branch em cima dele para fazer o conserto.

O que costuma diferenciar tag de branch é justamente a estabilidade do conteúdo. Você não deve deveria mexer em um repositório tag. Ele se diferencia do trunk por ser algo secundário e quase sempre está no passado.

Como usar

Em projetos de código aberto, os branches que não são aceitos no trunk pelos participantes do projeto podem se tornar as bases para forks, por exemplo.

Fork costuma ser um repositório completamente novo, com seu próprio trunk mas que é derivado de um repositório original (mesmo que este já seja um fork). É uma árvore de desenvolvimento nova mas criada de outra árvore. É comum haver comunicação entre estas árvores e em alguns casos até bidirecionalmente. Nestes casos o trunk de um acaba funcionando como branch de outro. Desta forma percebe-se que estes conceitos são bem abstratos.

Os conceitos apresentados são recomendações. Nada impede dos desenvolvedores fazerem de uma forma totalmente diferente se for mais adequado para o projeto. Esta é uma forma consagrada e provavelmente mais adequada para a maioria dos casos. Quanto menor a equipe e mais centralizado é o processo, menos vantagens existem em usar este esquema. E de fato é comum, mesmo em projetos open source pequenos, que o desenvolvimento acabe sendo feito essencialmente em cima do trunk e forks costumam funcionar como branches do projeto.

É preciso experimentar alguns fluxos de trabalho diferentes e escolher o que traz maior benefício para seu projeto.

 

Fluxo

Baseada em https://stackoverflow.com/a/16163/221800 e outras respostas da página.

por Sândler

EOF – atribui para variável tudo que está sendo printado

março 28, 2017 em Php por Sândler

EOF é um comando PHP que faz com que tudo que é exibido(printado em tela) dentro dele seja colocado dentro de uma variável.

Exemplo: 

<?php
  $str =<<<EOF
    <p>Hello</p><p>{$translate->World}</p>
EOF;
    echo $str;
?>
Aviso: Veja que o término da execução do procedimento termina com EOF; e ele está encostado do lado esquerdo do código e não ter espaços após, porque caso ele não esteja encostado, automaticamente o interpretador irá considerar que este comando faz parte da execução.

?>
por Sândler

Máscara Jquery Peso pt-br

março 24, 2017 em JavaScript, JQuery por Sândler

 

Galera, tem uma melhorada na função q o pessoal postou porém deixei somente uma casa decimal, porque para peso geralmente pega somente uma, 110,1 ou 85,3
Acima de 200 coloquei uma verificação para não ultrapassar, porque caso a pessoa acima de 40kg tente colocar 40,0 e adicione mais um zero, iria passar para 400,0 e para mim não foi viável.

 

function mascara_peso() {
var v = this.value, integer = v.split(‘.’)[0];
v = v.replace(/\D/g, “”);
v = v.replace(/^[0]+/, “”);
if (v.length <= 3 || !integer) {
if (v.length === 1) v = ‘ 00,’ + v;
if (v.length === 2) v = ‘ 0′ + v[0]+’,’+v[1];
if (v.length === 3) v = ‘ ‘ + v[0]+v[1]+’,’+v[2];
if (v.length === 4) v = v[0]+v[1]+v[2]+’,’+v[3];
} else {
v = v[0]+v[1]+v[2]+’,’+v[3];
}
console.log(v);
if(v > ’200′){
v = ‘ ‘ + v[0]+v[1]+’,’+v[2];
}

this.value = v;
}

$(document).on(‘keyup’, ‘#peso’, mascara_peso);

Referência: https://forum.imasters.com.br/topic/492041-mascara-de-peso-com-preenchimento-contr%C3%A1rio/

por Sândler

CAKEPHP – Criando conditions no paginate com outras tabelas

janeiro 11, 2016 em CakePhp, Php por Sândler

 

Montando um Paginate com conditions em todas as tabelas

$this->paginate = array(
‘fields’=>’Financeiro.*,Aluno.*,Usuario.*’,
‘conditions’ => $condition,
‘joins’=>array(
array( ‘table’ => ‘aluno’,
‘alias’ => ‘Aluno’,
‘type’ => ‘LEFT’,
‘conditions’ => array(‘Financeiro.aluno_id = Aluno.id’)
),
array( ‘table’ => ‘usuario’,
‘alias’ => ‘Usuario’,
‘type’ => ‘LEFT’,
‘conditions’ => array(‘Aluno.usuario_id = Usuario.id’)
)
),
// ‘contain’ => array(‘Aluno’ ,’Usuario’),
// ‘link’ => array(‘Financeiro’ => array(‘Aluno’ => ‘Usuario’)),
‘limit’ => 30,
‘order’ => array(‘id’ => ‘DESC’)
);

por Sândler

CakePHP – Criando Concat no find list

agosto 23, 2015 em CakePhp, Php por Sândler

Adicione na model:

public $virtualFields = array(‘nome_tipo‘ => ‘CONCAT(nome, ” (“, tipo,”)”)’);

 

Na controller faça a busca com o nome virtual que criou na modelo:

$tagsArr = $this->Tag->find(‘list’,array(‘fields’=>’nome_tipo‘, ‘recursive’=>-1));

por Sândler

Update com order by – atualizando uma PK a partir do último

julho 27, 2015 em Mysql, Php, SQL por Sândler

Fiz um teste para incrementar 1 a mais em cada id, e de order 1 a 100 não conseguiria, então adicionei o order by decrescente, que funcionou perfeitamente!

 

Exemplo:
update modulo set id = id+1 order by id desc;

por Sândler

Fazer varredura do HTML no PHP

junho 10, 2015 em Php por Sândler

if (preg_match_all(“#<tr[^>]*>(.*?)</tr>#is”, $html, $matches)) {
foreach ($matches[1] as $linha) {
if (preg_match_all(“#<td[^>]*>(.*?)</td>#is”, $linha, $mat)) {
foreach ($mat[1] as $col) {
// em $row está o conteúdo dos tds desta linha
var_dump($col);
}
}
}
} else {
echo ‘<h3>Nada encontrado!</h3>’;
}