Demostração básica sobre Encapsulamento utilizando PHP OO

O Encapsulamento é um recurso de proteção de acesso a propriedades de uma classe.

Public -> qualquer um pode acessar
Private -> apenas acesso interno
Protected -> sub-classes podem acessar

 

http://php.net/manual/pt_BR/language.oop5.php

Exemplo

Classe Agenda

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Agenda
{
    private $evento;
    private $data;
    private $descricao;
 
		public function setEvento( $evento ) {
			$this->evento = $evento;
		}
		public function getEvento() {
			return $this->evento;
		}
 
		public function setData( $data ) {
			$this->data = $data;
		}
		public function getData() {
			return $this->data;
		}
 
		public function setDescricao( $escricao ) {
			$this->escricao = $escricao;
		}
		public function getDescricao() {
			return $this->escricao;
		}
}

testanto a classe Agenda

1
2
3
4
5
6
7
$agenda = new Agenda();
$agenda->setEvento("Festa dos 100 dias");
$agenda->setData("14/03/2012");
$agenda->setDescricao("A festa mais esperado do ano!!!");
 
 
print_r($agenda);

Imprimir direto pelo PHP

Primeiro você deve configurar o php, abra o arquivo php.ini e descomente a linha a seguir;

1
extension=php_printer.dll

Em seguida reinicie o servidor web.

Crie um arquivo com o nome de teste.txt, e coloque algum texto dentro dele(apenas para testar).
teste.txt

1
estamos testando nosso arquivo teste.txt

O próximo passo é verificar o nome da impressora, a minha esta com o nome de (hplasercolor).

Crie um arquivo com o nome imprimir.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//configure o nome da sua impressora
$printer = "hplasercolor";
if($ph = printer_open($printer))
{
   // Get file contents
//abrindo o arquivo de texto
   $fh = fopen("teste.txt", "rb");
//llendo o arquivo de texto
   $content = fread($fh, filesize("teste.txt"));
   fclose($fh);
 
   // Set print mode to RAW and send PDF to printer
   printer_set_option($ph, PRINTER_MODE, "RAW");
   printer_write($ph, $content);
   printer_close($ph);
}
else "Couldn't connect...";

Para maiores informações visite o site oficial do PHP
http://br2.php.net/manual/pt_BR/book.printer.php

Downloads, tutoriais de instalação e muito mais, confira.

Site Oficial do PostgreeSQL
http://www.postgresql.org/

Site Brasileiro sobre PostgreSQL
http://www.postgresql.org.br/

Site oficial do PHP com instruções de configuração e uso das funções do PostgreeSQL.

http://br2.php.net/manual/pt_BR/book.pgsql.php

Abrindo uma conexão com o banco

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$bdcon = pg_connect("dbname=flavia");
//conecta a um banco de dados chamado "flavia"
 
$bdcon2 = pg_connect("host=localhost port=5432 dbname=flavia");
// conecta a um banco de dados chamado "flavia" em "localhost" na porta "5432"
 
$bdcon3 = pg_connect("host=ovelha port=5432 dbname=flavia user=ze password=buu");
//conecta a um banco de dados chamado "flavia" na máquina "ovelha" com um usuário e senha
 
$con_string = "host=ovelha port=5432 dbname=flavia user=ze password=buu";
$bdcon4 = pg_connect($con_string);
//coneta a um banco de dados chamado "flavia" na máquina "ovelha" com um usuário e senha
?>

Fechando a conexão com o banco

1
2
3
4
5
6
<?php
      $dbconn = pg_connect("host=localhost port=5432 dbname=mary")
          or die("Não foi possível conectar");
      print("Conexão bem sucedida");
      pg_close($dbconn);
  ?>

Cannot modify header information – headers already

Recebi alguns emails de usuários com duvidas sobre um erro bem comun que aparece ao usar o comando header. Para corrigir ou fazer com que o erro não apareça mais é bem simples.

Usando a função do PHP (ob_start — Ativa o buffer de saída) é uma das soluções.
http://www.php.net/manual/pt_BR/function.ob-start.php

session_start — Inicia dados de sessão
http://www.php.net/manual/pt_BR/function.session-start.php

Para corrigir esse problema no dreamweaver, pressione CTRL + U(janela de preferencias), em categorias selecione new document(novo documento) e desmarque a opção include unicode signature.

Geralmente esse erro aparece por causa de espaçõs em branco antes da TAG PHP ou por midificação do header apos ja ter impresso informações na tela do usuário, caso esteja chamando arquivos por include, require verifique estes arquivos também.

Até a proxima.

listar os arquivos de um diretorio

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
//caminho do diretório
$diretorio_data = "/home/www/data_txt/";
 
$$dir = @opendir($diretorio_data);
$i=0;
while (false !== ($file = readdir($$dir))) {// while pastas
//ignora diretorios
	if ($file != "." && $file != ".." && $file != "Thumbs.db" && $file != $dir) { // if pastas
		$i++;
		$indice[$i] = "$file";
		echo $nm_arquivo 	= $indice[$i] = "$file";
	}
} // fecha while

Oi pessoal, estou publicando um dos exercícios da prova de Estrutura de Dados sobre listas dinâmicas que fiz em parceria com meu amigo Thiago Castello que é fera em linguagem C.
segue o código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
 
#include <stdio.h> //carrega as bibliotecas
#include <stdlib.h>
 
//declaracao da lista
struct No{
        int valor;
        struct No * prox;
       };
 
struct No * Lista;
 
int main (void){
  Lista = NULL;
  int opcao;
  int x;
 
  do {
   printf ("nn Digite a opcao desejada:");
   printf ("n 1-inserir ");
   printf ("n 2-remover ");
   printf ("n 3-buscar ");
   printf ("n 4-Sair do programa nn");
   scanf ("%d", &opcao);
 
   switch (opcao){
 
     case 1:
           {
             printf ("nDigite o preco: ");
             scanf ("%d", &x);
 
             struct No * aux= (struct No *) malloc (sizeof (struct No));
             aux -> valor = x;
             aux-> prox = Lista;
             Lista =aux;
             printf ("n preco adicionado!n");
             break;
             }
 
    case 2: //remover
             {
               printf ("npreco a ser removido");
               scanf ("%d", &x);
               struct No * aux;
               struct No * ant;
 
               aux = Lista;
               ant = NULL;
               while (aux != NULL){
                     if (aux->valor == x){
 
                       if (aux == Lista)
                       {
                          Lista = aux->prox;
 
                       }
                       else{
                            ant->prox= aux-> prox;
                           }
                       printf ("nRemovido com sucesso!");
                       break;
                     }
                     else{
                           ant = aux;
                           aux = aux ->prox;
                         }
               }
 
             }
             break;
    case 3 : //buscar
                {
              int vlbusca;
             printf("digite o valor da busca:");
             scanf("%d",&vlbusca);
 
 
               struct No * aux;
               aux= Lista;
               while (aux != NULL)
               {
                   if(aux->valor == vlbusca)
                   { printf ("n o valor existe:", vlbusca);
 
                   } else {
                          printf ("n o valor nao existe:", vlbusca);
                          }
 
                  aux = aux -> prox;
 
               }
 
               break;
                }
 
 
    case 4: {
        break;
 
           }
   } //fim do switch
  } while (opcao != 4); //sair do programa
}

Para implementar editar e criar o executavel indico o programa Dev-C++ que pode sei baixado atraves de um dos links abaixo.
http://www.baixaki.com.br/download/dev-c-.htm
http://www.bloodshed.net/devcpp.html
O Dev-C++ é gratuito e de código aberto

Projeto Service manager

01 Introdução – http://blog.fabianobento.com.br/2011/09/projeto-service-manager/
02 Padrões para o projeto e especificações – http://blog.fabianobento.com.br/2011/09/projeto-service-manager-padroes-para-projeto-especificacoes/

Padrões para Nomenclatura em um banco de dados
1. INTRODUÇÃO

O objetivo deste documento é prover informações para formalizar a nomenclatura dos objetos de banco de dados, bem como apresentar regras para sua utilização evitando assim o hábito de existir diferentes nomenclaturas dentro da aplicação.
O documento apresenta os objetos de banco de dados com três itens:
Sintaxe, regras e exemplo. Isto para facilitar o entendimento do desenvolvedor.

2. BANCO DE DADOS

O nome do banco de dados deverá identificar o negócio que está sendo automatizado ou deverá refletir a sigla da aplicação.

Sintaxe:

{[a.. z]} _ xxxxxx , onde:

xxxxxx – indica o nome da aplicação que o banco de dados irá atender.
Para o nome da aplicação utilizar tudo em minúsculo com no máximo 25 caracteres de ‘a’ a ‘z’.

3. TABELAS

Exemplos:

tb_ordem_servico – Tabela de ordens de serviços
tb_pessoa – Tabela de pessoa física
tb_cliente – Tabela de clientes.

4. NOME DAS COLUNAS

Identificação Descrição do atributo Tipo de dado utilizado
NM Nome de coluna que irá armazenar valores “string”, ou seja, caracteres.(utilizar para nome próprio) String
NR Nome de coluna que irá armazenar valores numéricos inteiros, para conteúdos significativos. Numérico
IE INDICAR SITUAÇÕES ESPECIAIS, 

Nome de coluna que irá armazenar valores numéricos inteiros, utilizado em um dicionário de dados (Domínio)

Ex. 0 Aberto, 1 Fechado, 3 Cancelado

Numérico/String
DS Nome de coluna que irá armazenar valores “string”, ou seja, caracteres que são descritivos. String (caracteres)
DT Nome de coluna que irá armazenar valores do tipo data Data
HR Nome da coluna que irá armazenar valores do tipo hora Hora
VL Nome de coluna que irá armazenar valores numéricos, ou seja, números que podem possuir casas decimais Numérico
CD Nome de coluna que irá armazenar valores numéricos inteiros, utilizado em atributos falsos. Numérico
ST Nome de coluna que irá armazenar valores do tipo caracteres com conteúdo pré-estabelecido. Ex. Coluna ST_Cliente pode ter seu conteúdo como sendo “A” ou “I” e nenhum outro valor a não ser esses estipulados String
SG Nome de coluna que irá armazenar siglas, EX. Coluna SG_ESTADO pode ter seu conteúdo como sendo as siglas de estados, SP, MG, GO, SC. String

Regras:

– Para siglas utilizar todas as letras em maiúsculo;
– Usar palavras no singular e sem acentuação;
– Usar nome que identifique e individualize o dado dentro da tabela;
– Dar nomes distintos para dados distintos;
– Utilizar o nome sempre no singular;
– Sempre acrescentar comentário sobre a informação da coluna

Exemplos:

Cd_pessoa – código da pessoa
nm_pessoa – nome da pessoa
dt_nascimento – data de nascimento
vl_salario – valor do salário

As informações da padronizção do banco de dados foram criadas a partir de estudos e pesquisas em outros sistemas e na internet.

Projeto Service manager

01 Introdução – http://blog.fabianobento.com.br/2011/09/projeto-service-manager/

Antes de iniciarmos as tarefas e criação da documentação decidimos criar padrões para o desenvolvimento para facilitar o trabalho entre os integrantes do grupo.

Fizemos uma discussão para definirmos um padrão para o projeto, layout das telas, idioma de desenvolvimento e algumas outras estruturas.

O resultado final ficou da seguinte maneira;

Idioma de desenvolvimento
(Inset, update, delete)
Ex.: InsereCliente
EX.: InsertCliente
Atualiza <-> Update
Apaga <-> Delete

Ficou definido a utilização no idioma português.

Layout das telas
Ficou definido que as telas serão compostas por campo de busca, opção de inserir novos cadastros, e lista de alguns registros com opção de edição a partir da lista.

A partir desta discussão sugeri uma padronização para nomenclatura do banco de dados, que deverá ser minha próxima publicação.

Link para o artigo:

http://blog.fabianobento.com.br/2011/09/padroes-para-nomenclatura-em-um-banco-de-dados/