Skip to content

Instantly share code, notes, and snippets.

@jocile
Created May 22, 2022 19:54
Show Gist options
  • Save jocile/688d0c5b114e5da458c107d443b16a15 to your computer and use it in GitHub Desktop.
Save jocile/688d0c5b114e5da458c107d443b16a15 to your computer and use it in GitHub Desktop.
PHP examples
<?php
/** Carrega automaticamente uma classe quando instanciada
* @package bibliotecaphp
* @method __autoload
* @version 2
* @pattern MVC Controller
* @author PHP POO
* @param string $classe
* @date - 21/02/2012
*/
function __autoload($classe){
//pastas de classes
$pastas = array('../../bibliotecaphp','../model','../control','../view');
foreach ($pastas as $pasta)
if (file_exists("{$pasta}/{$classe}.class.php"))
include_once "{$pasta}/{$classe}.class.php";
}
?>
GIF89a�O�\Y=./����RN�������16���������|v����tm�-6�ž����qj���ZW��~��<=�䗖�ށ����└�ü������BF�qk��`^�ﴲ�EC���05������_a����PNﱭ��d`�����vp�DC�� F01��fa����rk�|u��������!�O,ڀOO L������L0E���!�O�6K����;MLJ���� %L.F�F),�F'�=& LA�?N�7N �"BL�DN�@�D:8�4A�A���D�1+�C���ND�<�M���
���M����k���<���� ?&��0�Y;��)�G��<5 @l����yHh� I�Ibʜ�rCO$�@³�O$ 0����#H�*��c��@;
�PNG

IHDR00W��gAMA��7��tEXtSoftwareAdobe ImageReadyq�e<�IDATx�b���?�P��0�@ yА�@ y 6AF�Yě�J�gbC�����1hi% ����?#P�w�� }H���@��?�>(��������0�zQ�!@,T#��� �E1��#�� 4���XXX��~���7ÿ?@i0fd|��ļ�w%��Z@�x���Z�_���ع�Դ�ddD$Ex�8��������_��3�z������ �o����U�3i ��G�j���G#�z�@��
�������LUt�d$���L0���� �?�d��ҿ��;����o��w�0ܺ|��ɵ; �E�Yc�(/HIBD�d��`��Ǜ_\���ݜ��J�A��``��v�?����}� ���� ���������?����_ wo?b���(û���|���pDx �HIB�@���SW�̐!"ȘAS���������A�L6/�|c8y�6÷�_���g�R�g`afd����_�G���7����@����n>� � ۀ(h�b@�z@�� ���1w�b� 6d��GX!����n�{����=�WICuU��� �.�fX�����70 �=� ��3��������� +'��G$�|���Ҋ b<� 4h�V��R" ف!� " J�����􏟿=x�Б�� #�+c���D9ZV<e���@��0B=�X�}g��,� �o N97w�����
`rrj��qDLEV
L�f���:����A��t����x�� ��<'����>���8f�3���$��û�$�����������3����0Hh3(XY �����8�D��@
x�6*� �l�����;�/�����43��?����� �F��V�y���g �~�c�2cP�Y4(���{ ��{���f������ �
N����t��� �^.v�+�~0������ �& faec�t�õ'?8�X�jQ��b� ��//�%���5+7'0��k�� W ���}�����Օ\�d��������<$��++V&6^a���K ��c����w ��C��� ��B�dq������|����g&yUuP��ԋ��0 � �� Q��g12Rg������y��G`|i1~�#��=b�����7DE$�8X������4 �G
 ��%�o`3�KN����e���e���ؚĂ����b%�WD��OR���'!N���"e����N����߿� *�� ����X�������1��� G�F3 �����#'?��ç�� +m��.�; �px�1�D% e6N�÷�08�2+)t� �:��� >�;��O� ��_���ٿ�l~>`=���?4�#�( @��|���)���%)����#&����y �py@�c`�JMGn�dx��?C�)4 #� ��ax�� Ç�/��؀�!vVN66 �̴L ��L ����g�s�O�X�2J�� g�7�>�����wnnNV~>F�[�����ͩ����k25�5�������}���� �,`O���ȃo?�dP��`( U�{ ��_ n�i&6�{�1�z���1��?pL����'���?20�s00��ߊ؜
@8J���,L� � ߀�������a��o �.��fP�r�`)##��p� �k�%��������'���?>}����j%'p�{��T~��X@ǃ������L@O��B�S� G �233�TL@��ת ����Ӷ �֟�����pX��:L�_IF�AJB�a١O +�b��`c@o�B���H�&$�Ai���/@���4�58�t��j�����T��U�����Ak��HIX ����a��/ 7����>?��#0�1����_�%0$)��`��]�� kz1P��^}���X�����l��(���j`H����w��A���B�����ء}��a�`�caPga��`gN`ef�8�pxL0B�[�#�~� L2���?��d@
,������Pf l \���@��򍁝���X|�� }�g� ��[�~0�z y`?M����03��P�ہ���R{��3����;�!]7X2����dL������ہ�h, �p�����L���'^`_W�������G��̒p�O_�2|�F�4,��!��1��E߁}�ϟ�20�3"���� s<0)1�=3+�>����'8�as(@��WA ��/�e� "��`C�Q��R4C=.*A�^����F��k��C���w��2��s����ȇ��&�5lN \��`�}xz�0���X�%����Z�j��y�?, ����_�I=� %6vn�_����� ��$�IlN \1��{�~|���� �ܬ B�X���d��GdtFH �G���Ȏ��x��,� ,����ï'ρ����;�ͩ������~�r�.8��8 ����274��<���1����=9�c.~`�ae������@����SWy�0�zv�.��� "�� -̎ Q��Т�� ^|���b���fȃC�7�c����#��|c���o_%W#J+T@�:4�>����ۯGN�z�Ÿ�xX #V��$H @�����C*.x�������(�j&�o�n0�5+�z��p�� �p$!X�2���������k���ʠ!���l]�w�34xd�?� ��E!5�?`d20� s1�����2�_p&%SnI`���t~?xr� 1_� �p�F�����X([�;zZ����AJS�AK^��棷 _?���ebee���gp6`Hud���#P+$�J�/�>24EH3 �Շ^0�x���`�3�B^@��������W ��]y�3��\��?�<@؇e�Ѕ�m�],�lbJ6� b*� _�5��^�F30yI=ue��0������4 � vNpF�z�'�O�^`�� 7/'�(0���:��`ψ�9 �xj�l�p+@;2w Q��Xv{�a�_�����*���00��2�|��?ҧ�'���J�V �=�+�>�J�<��80Ê�c���'`����v� �� �1�x0���@�.� � e���) ��>��篿0�6�!�����Qa��W`����������—� ߯�d�u�!(�|&�$���� G� ��N��:>�}���+!%>y``P����~�Ƞ��=�ȠrԶa�L~�6�̬��E�CXis�K����8 �H���I��rИ);��$���� ���� ����� ��Lz�� ��@��|�RI10���'��2,� J<J���?o�X
�#��
����\"���̐)&P{��I jU���A�!�y`l�ʮ�yM�t�sd��1�*�CV1��m����6�)����W1p74���?0S0���7�; ?���B
 ơ�� ���<1@ yА�@ yf�����W�IEND�B`�
�PNG

IHDR@@�iq� pHYs  ��tEXtSoftwareAdobe ImageReadyq�e<�IDATx��Z[oE�I\J��XIH�Vv�����z�BڊTހ�J�K�_��A���j�E ��\ۦ�Y���T��VK%��!U�z�3�&�Cvgg��H'�83sf�s�5BmjS��Ԧ�/aB����A�p�F�#e������ ���( gY��`Po�w��"�x[wMIJ��\4�ny���$պG
S����`p�(U|7����,��� t�8�,
�Y�x�h`����K���|5�[�$W����ei�����&kAㄘ�ǔ�wX��U���>a*���?�Ob�/���H�F�}W� ��� �.�I��wY�bd[S.�m��O�#p;��le���
@ϥ� ���3wO�O5X��ԟS0O��3AS� �@�b!�lj4Y=!�֭��x��4r��_l�V�6-$B�J#�����c�M̕���R6e1_���P����Ce�������MYqz6���9�>QXG��k1X/o�2��� 4&}�V���TS��ݚ�Q:�g�m�h�g�kaپ��g`�j}Zfw����M���k�a�I+�ñ�F�̀�+�b��Y��;""��5�||#��|��� �5�RO��W��J�Ë����W�iT'ض�s� |��ޚ��\�@h����./t�']���[t�{+Ȣzk/���$�yv ����+[��g�!�7�ŭ<��,w�p�+�7C��L7p�
�tI��s�Þ�5@�`�q lj��)Ӛ��1�����;v���zq�9�-���$��\�+��N�T6���R�*�*fy�vcz���GX�>n�¬���'B�V��j����Y3�1�G-���8} �[E��*��ٌ��g�EI�t�k-�������fjt�O�<��^���E���i+ ��ܟ%� ��ѫ!��Pz?;R�
2CVЙp�_�n�{ R����8�˟��z��۱�)�;=>em�h��28]��Tӻ�Q8��� ��zm���"SC�� �
&Z���7��D��ޞ�ol▋��o��d����\
�1�C�iz�ר�mj����#0<�� B�6n/�:����8�/�h]/u�� B$�~ �t�r����p�H5��w����,�E�-��V�!����J`�%�)Ҫrx��n{���h�hB׊�`��ZZ�;=�.�;�h:����T��u�XA�uLr����f��� ԍ��81�2�h��������?
��q����4.4���u���0,�cqL�_���i�;�>�-�I��-��� ��Xf���[
��������e��T
�A���,�Y���R����\(�,�� �1p�A�r�N�a#R&B,� ȍ�x���Ԧ69��c�هe_dIEND�B`�
host = localhost
name = livro
user = root
pass =
type = mysql
<?php
/**
* encapsula uma ação
* @package bibliotecaphp
* @name TAction
* @version 1
* @pattern MVC Controller
* @author PHP POO pg 366
* @date - 06/03/2012
*/
class TAction{
/**
* @var $action = método a ser executado
* @var $param = parametro
*/
private $action;
private $param;
/**
* Construtor instancia uma nova ação
* @method __construct
* @param $action = método a ser executado
*/
function __construct($action){
$this->action = $action;
}
/**
* acrescenta um parâmetro ao método a ser executado
* @method setParameter
* @param $param = nome do parâmetro
* @param $value = valor do parâmetro
*/
function setParameter($param, $value){
$this->param[$param] = $value;
}
/**
* transforma a ação em uma string do tipo URL
* @method serialize
* @return string URL
*/
function serialize(){
//verifica se a ação é um método
if (is_array($this->action)){
//obtém o nome da classe
$url['class'] = get_class($this->action[0]);
//obtém o nome do método
$url['method'] = $this->action[1];
}else if (is_string($this->action)){//é uma string
//obtém o nome da função
$url['method'] = $this->action;
}
//verifica se há parâmetros
if ($this->param){
$url = array_merge($url, $this->param);
}
//monta a URL
return '?' . http_build_query($url);
}
}
?>
<?php
/**
* Teste de ações utilizando TAction
* @package bibliotecaphp
* @name TPage.test
* @version 1
* @pattern MVC Controller
* @author PHP POO pg 367
* @date - 07/03/2012
*/
//inclui as classes necessárias
function __autoload($classe){
if (file_exists("{$classe}.class.php"))
include_once "{$classe}.class.php";
}
class Receptor{
function acao($parameter){
echo "Ação executada com sucesso\n<br/>";
}
}
$receptor = new Receptor;
$action1 = new TAction(array($receptor, 'acao'));
$action1->setParameter('nome', 'pablo');
echo $action1->serialize();
echo "<br/>\n";
//resultado URL: ?class=Receptor&method=acao&nome=pablo
$action2 = new TAction('strtoup');
$action2->setParameter('nome', 'pablo');
echo $action2->serialize();
//resultado URL: ?method=strtoup&nome=pablo
?>
<?php
/**
* @author
* @copyright 2008
*/
final class TConnection
{
private function __construct(){}
public static function open($name)
{
if (file_exists("../app.config/{$name}.ini"))
{
$db = parse_ini_file("../app.config/{$name}.ini");
}
else
{
throw new Exception("Arquivo '$name' n�o encontrado!");
}
$user = $db['user'];
$pass = $db['pass'];
$name = $db['name'];
$host = $db['host'];
$type = $db['type'];
switch ($type)
{
case 'pgsql':
$conn = new PDO("pgsql:dbname={$name}; user={$user}; password={$pass};host=$host");
break;
case 'mysql':
$conn = new PDO("mysql:host={$host}; port=3306;dbname={$name}", $user, $pass);
break;
case 'sqlite':
$conn = new PDO("sqlite:{$name}");
break;
case 'ibase':
$conn = new PDO("firebird:dbname={$name}", $user, $pass);
break;
case 'oci8':
$conn = new PDO("oci:dbname={$name}", $user, $pass);
break;
case 'mssql':
$conn = new PDO("mssql:host={$host}, 1433; dbname={$name}", $user, $pass);
break;
}
$conn -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $conn;
}
}
?>
<?php
/**
* @author
* @copyright 2008
*/
class TCriteria extends TExpression
{
private $expressions; //armazena a lista de express�es
private $operators; //armazena a lista de operadores
private $properties; //propriedades do crit�rio
public function add(TExpression $expression, $operator = self ::AND_OPERATOR)
{
if (empty($this ->expressions))
{
unset($operator);
}
$this -> expressions[] = $expression;
$this -> operators[] = $operator;
}
public function dump()
{
if (is_array($this->expressions))
{
foreach ($this -> expressions as $i => $expression)
{
$operator = $this -> operators[$i];
$result.= $operator.$expression->dump().' ';
}
$result = trim($result);
return "({$result})";
}
}
public function setProperty($property, $value)
{
$this -> properties[$property] = $value;
}
public function getProperty($property)
{
return $this ->properties[$property];
}
}
?>
<?php
/**
* Classe para abstração de tags HTML
* @package bibliotecaphp
* @name TElement
* @version 1
* @pattern MVC Model
* @author PHP POO pg 317
* @date - 25/02/2012
*/
class TElement{
/**
* @var $name = nome da TAG
* @var $properties = propriedade da TAG
*/
private $name;
private $properties;
/**
* Instancia uma TAG HTML
* @method __construct
* @param string $name = nome da TAG
*/
function __construct($name){
//define o nome do elemento
$this->name = $name;
}
/**
* Intercepta as atribuições à propriedade do objeto
* @method __set
* @param $name = nome da propriedade
* @param $value= valor
*/
function __set($name, $value){
//armazena os valores atribuídos ao array properties
$this->properties[$name] = $value;
}
/**
* Adiciona um elemento filho
* @method add
* @param $child = objeto filho
*/
public function add($child){
$this->children[] = $child;
}
/**
* exibe a TAG de abertura na tela
* @method open
* @param
*/
function open(){
echo"<{$this->name}";
if ($this->properties){
//percorre as propriedades
foreach ($this->properties as $name=>$value){
echo " {$name}=\"{$value}\"";
}
}
echo '>';
}
/**
* Exibe a TAG na tela juntamente com seu conteúdo
* @method show
* @param
*/
function show(){
// abre atag
$this->open();
echo "\n";
// se possui conteúdo
if (@$this->children){//@ suprime warnings
//percorre todos objetos filhos
foreach ($this->children as $child){
//se for objeto
if(is_object($child)){
$child->show();
}
//se for texto
else if ((is_string($child)) or (is_numeric($child))){
echo $child;
}
}
//fecha a TAG
$this->close();
}
}
/**
* Fecha uma TAG HTML
* @method close
* @param
*/
function close(){
echo "</{$this->name}>\n";
}
}
?>
<?php
/**
* Teste de criação de tags HTML com TElement
* @package bibliotecaphp
* @name Tags
* @version 1
* @pattern MVC View
* @author PHP POO pg 317
* @date - 25/02/2012
*/
//require_once ('../../bibliotecaphp/AutoLoadClass.inc.php');
//require_once ('../../bibliotecaphp/TElement.class.php');
require_once ('TElement.class.php');
//inicia o documento html
$html = new TElement('html');
//instancia seção head
$head = new TElement('head');
$html->add($head); //adiciona ao html
//define o titulo da pagina
$title = new TElement('title');
$title->add('Título da página');
$head->add($title); //adiciona ao head
//inicia o body do html
$body = new TElement('body');
$body->bgcolor='#ffffdd';
$html->add($body); //adiciona ao html
$center = new TElement('center');
$body->add($center);
//instancia um parágrafo
$p= new TElement('p');
$p->align = 'center';
$p->add('Sport Club Internacional');
$center->add($p); //adiciona ao body
//instancia uma imagem
$img= new TElement('img');
$img->src = '../testes/view/images/abc.jpg';
$img->width = '120';
$img->height = '120';
$center->add($img);//adiciona ao body
//instancia um separador horizontal
$hr= new TElement('hr');
$hr->width = '150';
$hr->align = 'center';
$center->add($hr);//adiciona ao body
//instancia um link
$a= new TElement('a');
$a->href = 'http://www.internacional.com.br';
$a->add('Visite o site oficial');
$center->add($a);//adiciona ao body
//instancia uma quebra de linha
$br= new TElement('br');
$center->add($br);//adiciona ao body
//instancia um botão
$input= new TElement('input');
$input->type = 'button';
$input->value = 'clique aqui para saber';
$input->onclick = "alert('Clube do povo do Rio Grande do Sul')";
$center->add($input);//adiciona ao body
//exibe o html com todos seus elementos filho
$html->show();
?>
<?php
/**
* Classe para construção de rótulos de texto
* @package bibliotecaphp
* @name TEntry
* @version 1
* @pattern
* @author PHP POO pg 400
* @date - 11/05/2012
*/
class TEntry extends TField{
/**
* Exibe o widget na tela
* @method show
* @param
*/
function show(){
//atribui as propriedades da tag
$this->tag->name = $this->name; //nome da TAG
$this->tag->value = $this->value; //valor da TAG
$this->tag->type = 'text'; //tipo de input
$this->tag->style = "width:{$this->size};"; //tamanho em pixels
// se o campo não é editável
if (!parent::getEditable()){
$this->tag->readonly = "1";
$this->tag->class = 'tfield_disabled'; // classe CSS
}
//exibe a tag
$this->tag->show();
}
}
?>
<?php
/**
* @author
* @copyright 2008
*/
abstract class TExpression
{
const AND_OPERATOR = ' AND ';
const OR_OPERATOR = ' OR ';
abstract public function dump();
}
?>
<?php
/**
* Classe base para construção dos widgets para formulário
* @package bibliotecaphp
* @name TField
* @version 1
* @pattern
* @author PHP POO pg 395
* @date - 25/02/2012
*/
abstract class TField{
protected $name;
protected $size;
protected $value;
protected $editable;
protected $tag;
/**
* Instancia um campo do formulário
* @method __construct
* @param string $name = nome do campo
*/
function __construct($name){
//define algumas características iniciais
self::setEditable(true);
self::setName($name);
self::setSize(200);
//Instancia um estilo CSS chamado tfield
//que será utilizado pelos campos do formulário
$style1 = new TStyle('tfield');
$style1->border = 'solid';
$style1->border_color ='#a0a0a0';
$style1->border_width ='1px';
$style1->z_index ='1';
$style2 = new TStyle('tfield_disabled');
$style2->border ='solid';
$style2->border_color ='#a0a0a0';
$style2->border_width ='1px';
$style2->background_color='#e0e0e0';
$style2->color ='#a0a0a0';
$style1->show();
$style2->show();
//cria uma tag HTML do tipo <input>
$this->tag = new TElement('input');
$this->tag->class = 'tfield'; //classe css
}
/**
* Define o nome do widget
* @method setName
* @param $name = nome do widget
*/
function setName($name){
$this->name = $name;
}
/**
* Retorna o nome do widget
* @method getName
* @return $name = nome do widget
*/
function getName(){
return $this->name;
}
/**
* Define o valor de um campo
* @method setValue
* @param $value = valor do campo
*/
function setValue($value){
$this->value=$value;
}
/**
* Retorna o valor de um campo
* @method getValue
* @return $value = valor do campo
*/
function getValue(){
return $this->value;
}
/**
* Define se o campo poderá ser editado
* @method setEditable
* @param $editable = TRUE ou FALSE
*/
function setEditable($editable){
$this->editable=$editable;
}
/**
* Retorna o valor da propriedade $editable
* @method getEditable
* @return $editable = TRUE ou FALSE
*/
function getEditable(){
return $this->editable;
}
/**
* Define uma propriedade para o campo
* @method setProperty
* @param $name = nome da propriedade
* @param $value = valor da propriedade
*/
function setProperty($name, $value){
//define uma propriedade de $this->tag
$this->tag->$name = $value;
}
/**
* Define a largura do widget
* @method setSize
* @param $size = tamanho em pixels
*/
function setSize($size){
$this->size = $size;
}
}
?>
<?php
/**
* @author
* @copyright 2008
*/
class TFilter extends TExpression
{
private $variable;
private $operator;
private $value;
public function __construct ($variable, $operator, $value)
{
$this -> variable = $variable;
$this -> operator = $operator;
$this -> value = $this ->transform($value);
}
private function transform ($value)
{
if (is_array($value))
{
foreach($value as $x)
{
if (is_integer($x))
{
$foo[] = $x;
}
else if (is_string($x))
{
$foo[]="'$x'";
}
}
$result = '('.implode(',', $foo).')';
}
else if (is_string($value))
{
$result = "'$value'";
}
else if (is_null($value))
{
$result = 'NULL';
}
else if (is_bool($value))
{
$result = $value ? 'TRUE' : 'FALSE';
}
else
{
$result = $value;
}
return $result;
}
public function dump()
{
return "{$this->variable} {$this->operator} {$this->value}";
}
}
?>
<?php
/**
* Agrega os componentes TField formando um formulário
* @package bibliotecaphp
* @name TForm
* @version 1
* @pattern MVC Controller
* @author PHP POO pg 389
* @date - 23/02/2012
*/
class TForm {
/**
* @var $fields = array de objetos contidos pelo form
* @var $name = nome do formulário
*/
protected $fields;
private $name;
/**
* Configura o nome do formulário na criação
* @method __construct
* @param string $name se faltar recebe 'myform'
*/
function __construct($name = 'myform'){
$this->setName($name);
}
/**
* Configura o nome do formulário
* @method setName
* @param string $name
*/
function setName($name){
$this->name = $name;
}
/**
* Define se o formulário poderá ser editado
* @method setEditable
* @param $bool = true ou false
*/
function setEditable($bool){
if ($this->fields){
foreach($this->fields as $object){
$object->setEditable($bool);
}
}
}
/**
* Define quais são os campos do formulário
* @method setFields
* @param array $fields = array de objetos TField
*/
function setFields($fields){
foreach($fields as $field){
if ($field instanceof TField){
$name = $field->getName();
$this->fields[$name] = $field;
if ($field instanceof TButton){
$field->setFormName($this->name);
}
}
}
}
/**
* Retorna um campo do formulário por seu nome
* @method getField
* @param String $name = nome do campo
* @return $fields[$name]
*/
function getField($name){
return $this->fields[$name];
}
/**
* Atribui dados aos campos do formulário
* @method setData
* @param $object = objeto com dados
*/
function setData($object){
foreach($this->fields as $name => $field){
if ($name){//labels não possuem nome
$field->setValue($object->$name);
}
}
}
/**
* Retorna os dados do formulário em forma de objeto
* @method getData
* @param $class = 'StdClass'
* @return $object
*/
function getData($class = 'StdClass'){
$object = new $class;
foreach($_POST as $key=>$val){
if (get_class($this->fields[$key]) == 'TCombo'){
if ($val != '0'){
$object->$key = $val;
}
}else{
$object->$key = $val;
}
}
//Percorre os arquivos de upload
foreach($_FILES as $key => $content){
$object->$key = $content['tmp_name'];
}
return $object;
}
/**
* Adiciona umobjeto no formulário
* @method add
* @param $object = objeto a ser adicionado
*/
function add($object){
$this->chield = $object;
}
/**
* Exibe o formulário na tela
* @method show
*/
function show(){
//Instancia tag de formulário
$tag = new TElement('form');
$tag->name = $this->name;// nome do formulário
$tag->method = 'post'; // método de transferência
//adiciona o objeto filho ao formulário
$tag->add($this->chield);
//exibe o formulário
$tag->show();
}
}
?>
<?php
/**
* Teste de formulário
* @package bibliotecaphp
* @name TForm.test
* @version 1
* @pattern MVC View
* @author PHP POO pg 406
* @date - 11/05/2012
*/
function __autoload($classe){
if (file_exists("{$classe}.class.php"))
include_once "{$classe}.class.php";
}
// cria o formulário
$form = new TForm('form_pessoas');
// cria um painel
$panel = new TPanel(440,200);
// adiciona o painel ao formulário
$form->add($panel);
// cria um rótulo para o título
$titulo = new TLabel('Exemplo de Formul&aacute;rio');
$titulo->setFonteFace('Arial');
$titulo->setFontColor('red');
$titulo->setSize(18);
//posiciona o título no painel
$panel->put($titulo, 120, 4);
//posiciona uma imagem no painel
$imagem = new TImage('ico_info.png');
$panel->put($imagem, 320, 120);
// cria os campos do formulário
$codigo = new TEntry('codigo');
$nome = new TEntry('nome');
$endereco = new TEntry('endereco');
$telefone = new TEntry('telefone');
$cidade = new TEntry('cidade');
$items = array();
$items['1'] = 'Porto Alegre';
$items['2'] = 'Lajeado';
//adiciona as opções de combo
//$cidade->addItems($items);
//ajusta o tamanho destes campos
$codigo->setSize(70);
$nome->setSize(140);
$endereco->setSize(140);
$telefone->setSize(140);
$cidade->setSize(140);
//cria os rótulos de texto
$label1 = new TLabel('C&oacute;digo');
$label2 = new TLabel('Nome');
$label3 = new TLabel('Endere&ccedil;o');
$label4 = new TLabel('Cidade');
$label5 = new TLabel('Telefone');
//posiciona os campos e os rótulos dentro do painel
$panel->put($label1, 10, 40);
$panel->put($codigo, 10, 60);
$panel->put($label2, 10, 90);
$panel->put($nome, 10, 110);
$panel->put($label3, 10, 140);
$panel->put($cidade, 10, 160);
$panel->put($label4, 200, 40);
$panel->put($endereco, 200, 60);
$panel->put($label5, 200, 90);
$panel->put($telefone, 200, 110);
//exibe o formulário
$form->show();
?>
<?php
/**
* Classe para exibição de imagens composta com TElement
* @package bibliotecaphp
* @name TImage
* @version 1
* @pattern MVC Model, composite
* @author PHP POO pg 329
* @date - 25/02/2012
*/
class TImage{
/**
* @var $source = localização da imagem
* @var $tag = objeto TElement
*/
private $source;
private $tag;
/**
* Instancia objeto TImage composto com TElement
* @method __construct
* @param $source = localização da imagem
*/
function __construct($source){
//atribui a localização da imagem
$this->source = $source;
//instancia o objeto TElement
$this->tag = new TElement('img');
}
/**
* Exibe a imagem na tela definindo suas propriedades
* @method show
* @param
*/
function show(){
//define algumas propriedades da tag
$this->tag->src = $this->source;
$this->tag->border=0;
//exibe tag na tela
$this->tag->show();
}
}
?>
<?php
/**
* Teste de criação de imagens com TImage
* @package bibliotecaphp
* @name TImage.test
* @version 1
* @pattern MVC View
* @author PHP POO pg 328
* @date - 25/02/2012
*/
//inclui as classe TElement e TImage
require_once ('TElement.class.php');
require_once ('TImage.class.php');
//instancia objeto imagem
$imagem = new TImage('../testes/view/images/abc.jpg');
//exibe o objeto imagem
$imagem->show();
?>
<?php
/**
* Classe para construção de rótulos de texto
* @package bibliotecaphp
* @name TLabel
* @version 1
* @pattern
* @author PHP POO pg 398
* @date - 25/02/2012
*/
class TLabel extends TField{
/**
* @var $fontSize = tamanho da fonte
* @var $fontFace = nome da fonte
* @var $fontColor = cor da fonte
*/
private $fontSize;
private $fontFace;
private $fontColor;
/**
* Instancia o label criando um objeto <font>
* @method __construct
* @param $value = texto do label
*/
function __construct($value){
// atribui o conteúdo do label
$this->setValue($value);
// instancia um elemento <font>
$this->tag = new TElement('font');
//define valores iniciais as propriedades
$this->fontSize = '14';
$this->fontFace = 'Arial';
$this->fontColor= 'black';
}
/**
* Define o tamamnho da fonte
* @method setSize
* @param $size = tamanho da fonte
*/
function setSize($size){
$this->size = $size;
}
/**
* Define a família da fonte
* @method setFontFace
* @param $font = nome da fonte
*/
function setFonteFace($font){
$this->fontFace = $font;
}
/**
* Define a cor da fonte
* @method setFontColor
* @param $color = cor da fonte
*/
function setFontColor($color){
$this->fontColor = $color;
}
/**
* Exibe o widget na tela
* @method show
* @param
*/
function show(){
//define o estilo da tag
$this->tag->style = "font-family:{$this->fontFace}; ".
"color:{$this->fontColor};".
"font-size:{$this->fontSize}";
//adiciona conteúdo a tag
$this->tag->add($this->value);
//exibe a tag
$this->tag->show();
}
}
?>
<?php
/**
* @author
* @copyright 2008
*/
abstract class TLogger
{
protected $filename;
public function __construct($filename)
{
$this->filename=$filename;
file_put_contents($filename);
}
abstract function write($message);
}
?>
<?php
/**
* @author
* @copyright 2008
*/
class TLoggerHTML extends TLogger
{
public function write($message)
{
$time = date("Y-m-d H:i:s");
$text = "<p>\n";
$text .= " <b>$time</b>: \n";
$text .= "<i>$message</i><br>\n";
$text .= "</p>\n";
$handler = fopen($this->filename, 'a');
fwrite($handler, $text);
fclose($handler);
}
}
?>
<?php
/**
* @author
* @copyright 2008
*/
class TLoggerTXT extends TLogger
{
public function write ($message)
{
$time = date("Y-m-d H:i:s");
$text = "$time :: $message\n";
$handler = fopen($this->filename, 'a');
fwrite($handler, $text);
fclose($handler);
}
}
?>
<?php
/**
* @author
* @copyright 2008
*/
class TLoggerXML extends TLogger
{
public function write ($message)
{
$time = date("Y-m-d H:i:s");
$text = "<log>\n";
$text .= " <time>$time</time>: \n";
$text .= "<message>$message</message>\n";
$text .= "</log>\n";
$handler = fopen($this->filename, 'a');
fwrite($handler, $text);
fclose($handler);
}
}
?>
<?php
/**
* Exibe mensagens ao usuário
* @package bibliotecaphp
* @name TMessage
* @version 1
* @pattern MVC Model
* @author PHP POO pg 373
* @date - 07/03/2012
*/
class TMessage{
/**
* instancia um objeto TMessage
* @method __contruct
* @param $type = tipo de mensagem(info, error)
* @param $message = mensagem ao usuário
*/
function __construct($type, $message){
$style = new TStyle('tmessage');
$style->position = 'absolute';
$style->left = '30%';
$style->top = '30%';
$style->width = '300';
$style->height = '150';
$style->color = 'black';
$style->background = '#DDDDDD';
$style->border = '4px solid #000000';
$style->z_index = '10000000000000000';
//exibe o estilo na tela
$style->show();
//instancia o painel para exibir o diálogo
$painel = new TElement('div');
$painel->class = "tmessage";
$painel->id = "tmessage";
//cria um botão que vai fechar o diálogo
$button = new TElement('input');
$button->type = "button";
$button->value = 'Fechar';
$button->onclick="document.getElementById('tmessage').style.display='none'";
//cria uma tabela para organizar o layout
$table = new TTable;
$table->align = 'center';
//cria uma linha para o ícone e a mensagem
$row = $table->addRow();
$row->addCell(new TImage("{$type}.png"));
$row->addCell($message);
//cria uma linha para o botão
$row = $table->addRow();
$row->addCell('');
$row->addCell($button);
//adiciona a tabela ao painel
$painel->add($table);
//exibe o painel
$painel->show();
}
}
?>
<?php
/**
* Teste de mensagems com TMessage
* @package bibliotecaphp
* @name TPage.test
* @version 1
* @pattern MVC Controller
* @author PHP POO pg 375
* @date - 07/03/2012
*/
//inclui as classes necessárias
function __autoload($classe){
if (file_exists("{$classe}.class.php"))
include_once "{$classe}.class.php";
}
//inclui uma mensagem de informação
new TMessage('ico_info', 'Esta a&ccedil;&atilde;o &eacute; inofenciva, isto &eacute; s&oacute; um lembrete');
?>
<?php
/**
* Controla fluxo de execução
* @package bibliotecaphp
* @name TPage
* @version 1
* @pattern MVC Controller
* @author PHP POO pg 359
* @date - 06/03/2012
*/
class TPage extends TElement{
/**
* Construtor define o elemento que irá representar
* @method __construct
*/
function __construct(){
parent::__construct('html');
}
/**
* exibe o contéudo da página
* @method show
*/
function show(){
$this->run();
parent::show();
}
/**
* executa determinados métodos de acordo
* com os parâmentros recebidos
* @method run
*/
function run(){
if ($_GET){
@$class = $_GET['class'];
$method = $_GET['method'];
if ($class){
$object = $class == get_class($this) ? $this : new $class;
if (method_exists($object, $method)){
call_user_func(array($object, $method), $_GET);
}
} else if (function_exists($method)){
call_user_func($method, $_GET);
}
}
}
}
?>
<?php
/**
* Teste de criação de páginas dinâmicas com TPage
* @package bibliotecaphp
* @name TPage.test
* @version 1
* @pattern MVC Controller
* @author PHP POO pg 361
* @date - 06/03/2012
*/
//inclui as classes necessárias
function __autoload($classe){
if (file_exists("{$classe}.class.php"))
include_once "{$classe}.class.php";
}
/**
* para testar colocar no link
* TPage.test.php?method=ola_mundo&nome=pablo
* @method ola_mund
* @param $param = nome
*/
function ola_mundo($param){
echo 'Ol&aacute; meu amigo ' . $param['nome'];
}
$pagina = new TPage;
$pagina->show();
?>
<?php
/**
* Teste de criação de páginas dinâmicas herdando TPage
* @package bibliotecaphp
* @name TPage2.test
* @version 1
* @pattern MVC Controller
* @author PHP POO pg 362
* @date - 06/03/2012
*/
//inclui as classes necessárias
function __autoload($classe){
if (file_exists("{$classe}.class.php"))
include_once "{$classe}.class.php";
}
class Mundo extends TPage{
/**
* para testar colocar no link
* TPage2.test.php?class=Mundo&method=ola&nome=pablo
* @method ola
* @param $param = nome
*/
function ola($param){
echo 'Ol&aacute; meu amigo ' . $param['nome'];
}
}
$pagina = new TPage;
$pagina->show();
?>
<?php
/**
* Teste de criação de páginas dinâmicas com TPage
* @package bibliotecaphp
* @name TPage3.test
* @version 1
* @pattern MVC Controller
* @author PHP POO pg 363
* @date - 06/03/2012
*/
//inclui as classes necessárias
function __autoload($classe){
if (file_exists("{$classe}.class.php"))
include_once "{$classe}.class.php";
}
/**
* executado quando o usuário clicar no link "Produtos"
* @method onProdutos
* @param $get = variável $_GET
*/
function onProdutos($get){
echo "Nesta se&ccedil;&atilde;o voc&ecirc; vai conhecer os produtos da nossa empresa
Temos desde pintos, frangos, porcos, bois, vacas e todo tipo de animal
que voc&ecirc; pode imaginar na nossa fazenda.";
}
/**
* executado quando o usuário clicar no link "Contato"
* @method onContato
* @param $get = variável $_GET
*/
function onContato($get){
echo "Para entrar em contato com nossa empresa,
ligue para 0800-1234-5678 ou mande uma carta endere&ccedil;ada para
Linha alto coqueiro baixo, fazenda recanto escondido.";
}
/**
* executado quando o usuário clicar no link "Empresa"
* @method onEmpresa
* @param $get = variável $_GET
*/
function onEmpresa($get){
echo "Aqui na fazenda Recanto Escondido fazemos eco-turismo
Voc&ecirc; vai poder conhecer nossas instala&ccedil;&otilde;es,
Tirar leite diretamente da vaca, recolher ovos do galinheiro e o mais
importante, vai poder limpar as instala&ccedil;&otilde;es dos su&iacute;nos, o que &eacute; o auge
do passeio. N&atilde;o deixe de conhecer nossa fazenda, temos lindas cabanas
equipadas com cama de casal, fog&atilde;o a lenha e banheiro";
}
// exibe alguns links
echo"<a href='?method=onProdutos'>Produtos</a><br/>";
echo"<a href='?method=onContato'>Contato</a><br/>";
echo"<a href='?method=onEmpresa'>Empresa</a><br/>";
//interpreta a página
$pagina = new TPage;
$pagina->show();
?>
<?php
/**
* Teste de criação de páginas dinâmicas com TPage e TActions
* @package bibliotecaphp
* @name TPage.test
* @version 1
* @pattern MVC Controller
* @author PHP POO pg 361
* @date - 06/03/2012
*/
//inclui as classes necessárias
function __autoload($classe){
if (file_exists("{$classe}.class.php"))
include_once "{$classe}.class.php";
}
class Pagina extends TPage{
private $table;
private $content;
/**
* instancia uma nova página
* @method __construct
*/
function __construct(){
parent::__construct();
//cria uma tabela
$this->table = new TTable;
//define algumas propriedades da tabela
$this->table->border = 1;
$this->table->width = 500;
$this->table->style = 'border-collapse:collapse';
//adiciona uma linha na tabela
$row = $this->table->addRow();
$row->bgcolor = '#d0d0d0';
//cria três ações
$action1 = new TAction(array($this, 'onProdutos'));
$action2 = new TAction(array($this, 'onContato'));
$action3 = new TAction(array($this, 'onEmpresa'));
//cria três links
$link1 = new TElement('a');
$link2 = new TElement('a');
$link3 = new TElement('a');
//define a ação dos links
$link1->href = $action1->serialize();
$link2->href = $action2->serialize();
$link3->href = $action3->serialize();
//define o rótulo de texto dos links
$link1->add('Produtos');
$link2->add('Contato');
$link3->add('Empresa');
//adiciona os links na linha
$row->addCell($link1);
$row->addCell($link2);
$row->addCell($link3);
//cria uma linha para o conteúdo
$this->content = $this->table->addRow();
//adiciona a tabela na página
parent::add($this->table);
}
/**
* executado cquando o usuário clicar no link "Produtos"
* @method onPodutos
* @param $get = variável $_GET
*/
function onProdutos($get){
$texto = "Nesta se&ccedil;&atilde;o voc&ecirc; vai conhecer os produtos da nossa empresa
Temos desde pintos, frangos, porcos, bois, vacas e todo tipo de animal
que voc&ecirc; pode imaginar na nossa fazenda.";
//adiciona o texto na linha de conteúdo da tabela
$celula = $this->content->addCell($texto);
$celula->colspan = 3;
//cria uma janela
$win = new TWindow('Promo&ccedil;&atilde;o');
//define posição e tamanho
$win->setPosition(200,100);
$win->setSize(240,100);
//adicona texto na janela
$win->add('Temos cogumelos rec&eacute;m colhidos e tamb&eacute;m ovos de codorna fresquinhos');
//exibe a janela
$win->show();
}
/**
* executado quando o usuário clicar no link "Contato"
* @method onContato
* @param $get = variável $_GET
*/
function onContato($get){
$texto = "Para entrar em contato com nossa empresa,
ligue para 0800-1234-5678 ou mande uma carta endere&ccedil;ada para
Linha alto coqueiro baixo, fazenda recanto escondido.";
//adiciona texto na linha de conteúdo da tabel
$celula = $this->content->addCell($texto);
$celula->colspan = 3;
}
/**
* executado quando o usuário clicar no link "Empresa"
* @method onEmpresa
* @param $get = variável $_GET
*/
function onEmpresa($get){
$texto = "Aqui na fazenda Recanto Escondido fazemos eco-turismo
Voc&ecirc; vai poder conhecer nossas instala&ccedil;&otilde;es,
Tirar leite diretamente da vaca, recolher ovos do galinheiro e o mais
importante, vai poder limpar as instala&ccedil;&otilde;es dos su&iacute;nos, o que &eacute; o auge
do passeio. N&atilde;o deixe de conhecer nossa fazenda, temos lindas cabanas
equipadas com cama de casal, fog&atilde;o a lenha e banheiro";
//adiciona texto na linha de conteúdo da tabel
$celula = $this->content->addCell($texto);
$celula->colspan = 3;
}
}
//instancia nova página
$pagina = new Pagina;
//exibe a página juntamente com seu conteúdo e interpreta a URL
$pagina->show();
?>
<?php
/**
* Classe para exibição de painéis div
* @package bibliotecaphp
* @name TPanel
* @version 1
* @pattern MVC Model
* @author PHP POO pg 345
* @date - 06/03/2012
*/
Class TPanel extends TElement{
/**
* Instancia um objeto TPanel
* @method __construct
* @param $width = largura do painel
* @param $height= altura do painel
*/
function __construct($width, $height){
//instancia objeto TStyle
//para definir as características do painel
$painel_style = new TStyle('tpanel');
$painel_style->position ='relative';
$painel_style->width = $width;
$painel_style->height = $height;
$painel_style->border = '2px solid';
$painel_style->border_color = '#f0f0f0';
//exibe estilo na tela
$painel_style->show();
parent::__construct('div');
$this->class = 'tpanel';
}
/**
* posiciona um objeto no painel
* @method put()
* @param $widget = objeto a ser inserido no painel
* @param $col = coluna em pixels
* @param $row = linha em pixels
* @return
*/
public function put($widget, $col, $row){
//cria uma camada para o widget
$camada = new TElement('div');
//define a posição da camada
$camada->style = "position:absolute; left:{$col}px; top:{$row}px;";
//adiciona o objeto (widget) à camada recém-criada
$camada->add($widget);
//adiciona widget no array de elementos
parent::add($camada);
}
}
?>
<?php
/**
* Teste de criação de painéis com php
* @package bibliotecaphp
* @name TPanel.test
* @version 1
* @pattern MVC View
* @author PHP POO pg 344 e 347
* @date - 06/03/2012
*/
//inclui as classes necessárias
function __autoload($classe){
if (file_exists("{$classe}.class.php"))
include_once "{$classe}.class.php";
}
//------------- HTML ---------------------------
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Paineis em html e orientada a objetos com php</title>
<body>
<h2>HTML</h2>
<div style="position:relative; width:400px;
background-image: url(../testes/view/images/abc.jpg);
height:300px; border:2px solid; border-color:grey">
<div style="position:absolute; left:10px; top:10px;">
<p align="left">isso é um teste, x:10, y:10</p>
</div>
<div style="position:absolute; left:200px; top:200px;">
<p align="left">outro teste, x:200, y:200</p>
</div>
<div style="position:absolute; left:262px; top:10px;">
<img src="../testes/view/images/abc.jpg" border="0"/>
</div>
</div>
<?php
//----- Orientação a objetos comparada com html--------
echo '<br /><h2>POO</h2>';
//instancia novo painel
$painel = new TPanel(400,300);
//coloca objeto parágrafo na posição 10,10
$texto = new TParagraph('isso é um teste, x:10, y:10');
$painel->put($texto,10,10);
//coloca objeto parágrafo na posição 200,200
$texto = new TParagraph('outro teste, x:200, y:200');
$painel->put($texto,200,200);
//coloca objeto imagem na posição 10,180
$texto = new TImage('../testes/view/images/abc.jpg');
$painel->put($texto,10,180);
//coloca objeto imagem na posição 240,10
$texto = new TImage('../testes/view/images/abc.jpg');
$painel->put($texto,240,10);
//exibe o painel
$painel->show();
?>
</body>
<?php
/**
* Classe para exibição de parágrafos herda TElement
* @package bibliotecaphp
* @name TParagraph
* @version 1
* @pattern MVC model, generate
* @author PHP POO pg 332
* @date - 25/02/2012
*/
class TParagraph extends TElement{
/**
* Instancia objeto TParagraph
* @method __construct
* @param string $text = texto a ser exibido
*/
function __construct($text){
parent::__construct('p');
//atribui conteúdo do texto
parent::add($text);
}
/**
* Define o alinhamento do texto
* @method setAligne
* @param $align = alinhamento do texto
*/
function setAlign($align){
$this->align = $align;
}
}
?>
<?php
/**
* Teste de criação de tags texto com TParagraph
* @package bibliotecaphp
* @name TParagraph.test
* @version 1
* @pattern MVC View
* @author PHP POO pg 333
* @date - 25/02/2012
*/
//inclui as classe TElement e TStyle
require_once ('TElement.class.php');
require_once ('TParagraph.class.php');
//instancia objeto parágrafo
$texto1 = new TParagraph('teste<br>teste1<br>teste2');
$texto1->setAlign('left');
//exibe objeto
$texto1->show();
//instancia objeto parágrafo
$texto2 = new TParagraph('teste<br>teste1<br>teste2');
$texto2->setAlign('right');
//exibe objeto
$texto2->show();
?>
<?php
/**
* Exibe perguntas ao usuário
* @package bibliotecaphp
* @name TQuestion
* @version 1
* @pattern MVC Model
* @author PHP POO pg 376
* @date - 07/03/2012
*/
class TQuestion{
/**
* instancia um objeto TQuestion
* @method __contruct
* @param $message = pergunta ao usuário
* @param $action_yes = ação para resposta positiva
* @param $action_no = ação para resposta negativa
*/
function __construct($message, TAction $action_yes, TAction $action_no){
$style = new TStyle('tquestion');
$style->position = 'absolute';
$style->left = '30%';
$style->top = '30%';
$style->width = '300';
$style->height = '150';
$style->border_width = '1px';
$style->color = 'black';
$style->background = '#DDDDDD';
$style->border = '4px solid #000000';
$style->z_index = '10000000000000000';
//converte os nomes de métodos em URL´s
$url_yes = $action_yes->serialize();
$url_no = $action_no->serialize();
//exibe o estilo na tela
$style->show();
//instancia o painel para exibir o diálogo
$painel = new TElement('div');
$painel->class = "tquestion";
//cria um botão para a resposta positiva
$button1 = new TElement('input');
$button1->type = "button";
$button1->value = 'Sim';
$button1->onclick="javascript:location='$url_yes'";
//cria um botão para a resposta negativa
$button2 = new TElement('input');
$button2->type = "button";
$button2->value = 'N&atilde;o';
$button2->onclick="javascript:location='$url_no'";
//cria uma tabela para organizar o layout
$table = new TTable;
$table->align = 'center';
$table->cellspacing = 10;
//cria uma linha para o ícone e a mensagem
$row = $table->addRow();
$row->addCell(new TImage("ico_question.png"));
$row->addCell($message);
//cria uma linha para os botões
$row = $table->addRow();
$row->addCell($button1);
$row->addCell($button2);
//adiciona a tabela ao painel
$painel->add($table);
//exibe o painel
$painel->show();
}
}
?>
<?php
/**
* Demonstra o funcionamento de um diálogo de questão
* @package bibliotecaphp
* @name TPage.test
* @version 1
* @pattern MVC Controller
* @author PHP POO pg 378
* @date - 07/03/2012
*/
//inclui as classes necessárias
function __autoload($classe){
if (file_exists("{$classe}.class.php"))
include_once "{$classe}.class.php";
}
class Pagina extends TPage{
private $panel;
/**
* instancia uma nova página
* @method __construct
*/
function __construct(){
parent::__construct();
//cria um novo painel
$this->panel = new TPanel(400,200);
//coloca um novo texto na coluna 10 e linha 10
$this->panel->put(new TParagraph('Responda a quest&atilde;o'), 10, 10);
//cria duas ações
$action1 = new TAction(array($this, 'onYes'));
$action2 = new TAction(array($this, 'onNo'));
//exibe pergunta ao usuário
new TQuestion('Deseja realmente excluir o registro?', $action1, $action2);
//adiciona o painel a janela
parent::add($this->panel);
}
/**
* executado caso o usuário responda SIM para a pergunta
* @method onYes
*/
function onYes(){
$this->panel->put(new TParagraph('Voc&ecirc; escolheu a op&ccedil;&atilde;o sim'), 10, 40);
}
/**
* executado caso o usuário responda NÂO para a pergunta
* @method onNo
*/
function onNo(){
$this->panel->put(new TParagraph('Voc&ecirc; escolheu a op&ccedil;&atilde;o n&atilde;o'), 10, 40);
}
}
//instancia a página
$pagina = new Pagina;
//exibe a página
$pagina->show();
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment