Introdução à Linguagem PHP

Tamanho: px
Começar a partir da página:

Download "Introdução à Linguagem PHP"

Transcrição

1 Introdução à Linguagem PHP Manipulando erros em PHP <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title></title> </head> <body> <?php function myerrorhandler($errno, $errstr, $errfile, $errline) switch ($errno) case E_NOTICE: case E_USER_NOTICE: $errors = "Notice"; break; case E_WARNING: case E_USER_WARNING: $errors = "Atenção"; break; case E_ERROR: case E_USER_ERROR: $errors = "Fatal Error"; break; default: $errors = "Desconhecido"; break; if (ini_get("display_errors")) printf ("<br />\n<b>%s</b>: %s em <b>%s</b> na linha <b>%d</b><br /><br />\n", $errors, $errstr, $errfile, $errline); if (ini_get('log_errors')) error_log(sprintf("php %s: %s in %s on line %d", $errors, $errstr, $errfile, $errline)); return true; // Configurar o manipulador de erros set_error_handler("myerrorhandler"); // Forçar um erro de divisão por ZERO echo 4/0;?> </body> </html> Programação Orientada a Objeto em PHP (Extraído do Livro Zend PHP 5 Certification Study Guide ) A Orientação a Objetos no PHP em sua 5ª versão foi totalmente reescrita do zero. Neste capítulo, presume se que o aluno esteja familiarizado com os conceitos de OO para que possa usufruir de seu poder aplicado ao PHP.

2 Fundamentos de POO Enquanto o objetivo deste capítulo não é fornecer um guia aos conceitos da Programação Orientada a Objetos (POO), é uma boa idéia dar uma breve olhada em alguns de seus fundamentos. A POO remonta o conceito de agrupar código e dados juntos em unidades lógicas chamadas classes. Este processo é usualmente conhecido como encapsulamento, ou ocultação de informações, desde que seu objetivo é dividir uma aplicação em entidades separadas cujos componentes internos podem ser alterados sem alterar suas interfaces. Então classes são essencialmente uma representação de um conjunto de funções (conhecidas por métodos e variáveis (conhecidas por propriedades ou atributos) projetadas para trabalharem juntas e fornecer uma interface específica para o mundo externo. É importante entender que classes são apenas plantas que não podem ser usadas diretamente elas têm que ser instanciadas em objetos que podem interagir com o resto da aplicação. Declarando uma classe A declaração básica de uma classe é muito simples: Class myclass //Conteúdo aqui Como você pode perceber, esse código avisa ao interpretador PHP que você está declarando uma classe chamada myclass cujo conteúdo será normalmente uma combinação de constantes, variáveis e funções (métodos). Instanciando um Objeto Uma vez que tenha declarado uma classe, você precisa instanciá la para obter as vantagens que ela oferece. Isso é feito usando o construtor new: $myinstance = new myclass(); No PHP 5, os objetos são tratados de maneira diferente dos outros tipos de variáveis. Um objeto é sempre passado por referência ao invés de por valor. Por exemplo: $myclassinstance = new myclass(); $copyinstance = $myclassinstance(); Neste caso, ambas as variáveis myclassinstance e copyinstance apontarão para o mesmo objeto. Isso é um comportamento padrão dos objetos na maioria das linguagens, mas não era o caso no PHP 4. Herança de classe Um dos fundamentos chave da POO é a herança. Ela permite que uma classe estenda outra, essencialmente para adicionar novos métodos e propriedades, bem como redefinindo os caso já existentes. Por exemplo: class a function test() echo "a::test called"; function func()

3 echo "a::func called"; class b extends a function test() echo "b::test called"; class c extends b function test() parent::test(); class d extends c function test() b::test(); $a = new a(); $b = new b(); $c = new c(); $d = new d(); $a->test(); // Outputs "a::test called" $b->test(); // Outputs "b::test called" $b->func(); // Outputs "a::func called" $c->test(); // Outputs "b::test called" $d->test(); // Outputs "b::test called" Nesse script, começamos declarando uma classe chamada a. Então declaramos a classe b que estende a. Como pode ver, a classe b também tem o método test() que redefine aquele declarado em a. Perceba que ainda podemos, no entanto, acessar os outros métodos de a. Por exemplo, se chamarmos $b->func(), estamos efetivamente chamando o método func() de a. Métodos e propriedades de classe Como mencionado anteriormente, classes podem conter métodos e variáveis (propriedades). Métodos são declarados do mesmo jeito das funções tradicionais: class myclass function myfunction() echo "You called myclass::myfunction"; Do lado de fora do escopo de uma classe, seus métodos são chamados usando o operador >: $obj = new myclass(); $obj->myfunction(); Realemente, a variável $obj só é válida dentro do escopo de nosso pequeno trecho de código acima que nos deixa com um dilema: como referenciar um método de classe de dentro da própria classe? Aqui vai um exemplo: class myclass function myfunction()

4 echo "You called myclass::myfunction"; function callmyfunction() //??? Claramente, callmyfunction() precisa de uma maneira de chamar myfunction() de dentro do escopo do objeto. Para que isso seja possível, o PHP dispõe de uma variável especial chamada $this. Ele sempre se refere ao próprio objeto. Exemplo: class myclass function myfunction($data) echo "The value is $data"; function callmyfunction($data) // Call myfunction() $this->myfunction($data); $obj = new myclass(); $obj->callmyfunction(123); Este trecho de código mostrará The value is 123. Construtores O PHP introduziu o conceito de construtor unificado e, juntamente com ele, um novo destruidor de objetos. O construtor e o destruidor são métodos especiais de classe que são chamados, como seus nomes sugerem, na criação e destruição dos objetos, ou para executar procedimentos de inicialização. Nas versões anteriores do PHP, construtores tinham o mesmo nome da classe. Agora, utiliza se o método construct(). Isso é útil, pois caso queira renomear a classe, não será preciso renomear os construtores. Exercício: verifique se é possível existir mais de um método construtor na mesma classe. class foo function construct() echo METHOD ; function foo() // PHP 4 style constructor new foo(); Destruidores Além do método construct(), temos também o método destruct(). Ele trabalha como uma imagem de espelho do construct(). Ele é chamado logo antes de um objeto ser destruído e é útil para executar operações de limpeza, como desconectar de um recurso remoto ou apagar arquivos temporários: class foo function construct()

5 echo METHOD. PHP_EOL; function destruct() echo METHOD ; new foo(); Esse código mostrará: foo:: construct foo:: destruct A destruição ocorre quando qualquer referência a um objeto desaparece, como no caso abaixo: $a = new foo(); $b = $a; unset($a); Mesmo que um objeto ainda possua uma ou mais referências ativas, o método destruct() é chamado no final da execução do script, então você terá a garantia de que em algum momento seu destruidor será executado. Entretanto, não há uma maneira de determinar a ordem de destruição de dois ou mais objetos. Isso pode causar algum problema quando um objeto depende de outro para executar uma ou mais funções. Visibilidade O PHP 5 adicionou a noção de visibilidade de métodos e propriedades de objetos, que permite que você determine o escopo a partir do qual cada componente de sua classe possa ser acessado. public O recurso pode ser acessado a partir de qualquer escopo. protected O recurso só pode ser acessado de dentro da classe onde está definido ou a partir de seus descendentes. private O recurso só pode ser acessado de dentro da classe onde está definido. final O recurso pode ser acessado a partir de qualquer escopo, mas não pode ser redefinido ou sobrecarregado. OBS: o nível de visibilidade final somente se aplica a métodos e classes. Classes que são declaradas como final não podem ser estendidas. Normalmente, você irá querer tornar todos os métodos e propriedades de sua API públicas, desde que queira torná los acessíveis de fora de seus objetos, enquanto você desejará manter as operações internas protegidas ou privadas. Construtores e destruidores são normalmente declarados como públicos, entretanto, às vezes você pode desejar tornar os construtores privados quando, por exemplo, quer usar alguns padrões de projeto como o Singleton ou Factory: class foo public $foo = bar ; protected $baz = bat ; private $qux = bingo ; function construct() var_dump(get_object_vars($this));

6 class bar extends foo function construct() var_dump(get_object_vars($this)); class baz function construct() $foo = new foo(); var_dump(get_object_vars($foo)); new foo(); new bar(); new baz(); O exemplo acima cria três classes: foo, bar que estende foo e tem acesso a todos os métodos e propriedades públicos e privados de foo e, finalmente, baz que cria uma nova instância de foo e pode somente acessar suas propriedades públicas. Execute o programa e observe a saída. Declarando e Acessando Propriedades Propriedades são declaradas em PHP orientado a objetos usando um dos modificadores de acesso mencionados anteriormente, seguido de seus respectivos nomes: class foo public $bar; protected $baz; private $bas; public var1 = "Test"; // String public var2 = 1.23; // Numeric value public var3 = array (1, 2, 3); Observe que, como uma variável comum, uma propriedade de classe pode ser declarada e inicializada ao mesmo tempo. Entretanto, a inicialização é limitada à associação de valores (mas não a uma avaliação de expressão). Você não pode, por exemplo, iniciar uma propriedade chamando uma função, o que só pode ser feito de dentro de um construtor. Constantes, Métodos e Propriedades Estáticos Juntamente com o PPP, o PHP 5 também implementa métodos e propriedades estáticos. Ao contrário dos métodos e propriedades regulares, os seus correspondentes estáticos existem e são acessíveis como parte de uma classe em si, em oposição ao existente apenas no âmbito de uma das suas instâncias. Isto permite tratá las como verdadeiras contêineres de funções e dados interrelacionados o que, por sua vez, é um expediente muito útil para evitar conflitos de nomes. Enquanto o PHP 4 permitia que você chamasse qualquer método de uma classe estática usando o escopo operador de resolução:: (oficialmente conhecido como Paamayim Nekudotayim hebraico para Colon "Double"), o PHP 5 introduz uma sintaxe mais rigorosa que apela para o uso da palavra chave static para transmitir a utilização de propriedades e métodos como tal. Você deve ter em mente que o PHP 5 é muito rigoroso sobre o uso de propriedades e métodos estáticos. Por exemplo, chamar propriedades estáticas usando a notação de objeto resultará em uma mensagem de erro: class foo static $bar = "bat";

7 static public function baz() echo "Hello World"; $foo = new foo(); $foo->baz(); echo $foo->bar; Isso irá mostrar: foo::baz Notice: Undefined property: foo::$bar in PHPDocument1 on line 17 É necessário para a definição de estático seguir a definição de visibilidade, ou seja, se nenhuma definição de visibilidade é declarada, o método ou propriedade é considerado público. Constantes de Classe Constantes de classe funcionam da mesma forma que as constantes regulares, exceto que possuem o escopo interno à classe. Constantes de classe são públicas e acessíveis a partir de qualquer escopo. Por exemplo, o seguinte script mostrará Hello World: class foo const BAR = "Hello World"; echo foo::bar; Constantes de classe têm várias vantagens sobre as constantes tradicionais: uma vez que são encapsuladas em uma classe, elas fazem um código muito mais limpo, e são significativamente mais rápidas do que as declaradas com o construtor define(). Operador de Resolução de Escopo (::) (Extraído de O Operador de Resolução de Escopo, também chamado de Paamayim Nekudotayim, ou em termos mais simples, dois pontos duplo, é um token que permite acesso a métodos ou membros estáticos, constantes, e sobrecarregados de uma classe. Quando referenciando esses itens de fora da definição da classe, você usa o nome da classe. No PHP 5.3.0, é possível referenciar o nome da classe usando uma variável. O valor da variável não pode ser uma palavra chave (e.g. self, parent e static). Paamayim Nekudotayim pode parecer de início uma escolha estranha para um dois pontos duplo. No entanto, na hora de escrever o Engine da Zend 0.5 (que provia o PHP3), foi o que a equipe da Zend decidiu. Realmente significa dois pontos duplo em Hebreu! Exemplo #1 :: de fora da definição da classe class MinhaClasse const VALOR_CONST = 'Um valor constante'; $classname = 'MinhaClasse'; echo $classname::valor_const; // No PHP echo MinhaClasse::VALOR_CONST;

8 Duas palavras chaves especiais self e parent são usadas para acessar membros ou métodos de dentro da definição da classe. Exemplo #2 :: de dentro da definição da classe class OutraClasse extends MinhaClasse public static $meu_estatico = 'variável estática'; public static function doispontosduplo() echo parent::valor_const. "\n"; echo self::$meu_estatico. "\n"; $classname = 'OutraClasse'; echo $classname::doispontosduplo(); // No PHP OutraClasse::doisPontosDuplo(); Quando uma subclasse sobrecarrega a definição de um método do pai, O PHP não chamará o método pai. Fica ao encargo da subclasse chamar o método pai ou não. Isso também se aplica a definições de métodos Construtores e Destruidores, Sobrecarregados e Mágicos também. Exemplo #3 Chamando um método pai class MinhaClasse protected function minhafuncao() echo "MinhaClasse::minhaFuncao()\n"; class OutraClasse extends MinhaClasse /* Sobrecarrega a definição do pai */ public function minhafuncao() /* Mas ainda chama a função pai */ parent::minhafuncao(); echo "OutraClasse::minhaFuncao()\n"; $classe = new OutraClasse(); $classe->minhafuncao(); Interfaces e Classes Abstratas Outro novo recurso adicionado ao PHP 5 é o de interfaces e classes abstratas. Elas são usadas para criar uma série de restrições sobre a concepção básica de um grupo de classes. Uma classe abstrata define essencialmente o esqueleto básico de um tipo específico de entidade encapsulada. Por exemplo, você pode usar uma classe abstrata para definir uma base conceitual de um "carro" como tendo duas portas, um método de fechar ou abrir portas. Classes abstratas não podem ser usadas diretamente, mas devem ser estendidas para que a classe descendente forneça um conjunto completo de métodos. Por exemplo: abstract class DataStore_Adapter private $id; abstract function insert(); abstract function update(); public function save() if (!is_null($this->id)) $this->update(); else $this->insert();

9 class PDO_DataStore_Adapter extends DataStore_Adapter public construct($dsn) //... function insert() //... function update() //... OBS: Você deve declarar uma classe como abstrata, enquanto ela tiver (ou herdar, sem fornecer um corpo) pelo menos um método abstrato. Como você pode ver, neste exemplo, nós definimos uma classe chamada DataStore_Adapter e declaramos dois métodos abstratos chamados insert() e update(). Observe como esses métodos na verdade não têm um corpo que é um dos requisitos das classes abstratas e como a própria classe deve ser declarada como abstrata, para que o compilador possa satisfazer os requisitos do analisador sintático. Em seguida, estender DataStore_Adapter em PDO_DataStore_Adapter, que já não é abstrata, porque temos agora um corpo fornecido, tanto para insert() como para update(). Interfaces Interfaces, por outro lado, são usadas para especificar uma API que uma classe deve implementar. Isto permite lhe criar um contrato "comum" que as classes devem implementar com o propósito de satisfazer determinados requisitos lógicos, por exemplo, você poderia usar interfaces para o conceito abstrato de fornecedor de banco de dados em uma API comum que poderia então ser implementada em uma série de classes que fazem interface com SGBDs diferentes. Métodos de Interface não podem conter nenhum corpo: interface DataStore_Adapter public function insert(); public function update(); public function save(); public function newrecord($name = null); class PDO_DataStore_Adapter implements DataStore_Adapter public function insert() //... public function update() //... public function save() //...

10 public function newrecord($name = null) Se, no exemplo acima, você não definir todos os métodos para uma interface em particular ou todos os argumentos para qualquer método de determinada interface (ou seja, não tiver a mesma assinatura), você vai ver algo como: Fatal error: Class PDO_DataStore_Adapter contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (DataStore_Adapter::save) in //document// on line 27 ou Fatal error: Declaration of PDO_DataStore_Adapter::newRecord() must be compatible with that of DataStore_Adapter::newRecord() in //document// on line 12 É possível implementar mais de uma interface numa mesma classe. Bastando separá las por vírgula: class PDO_DataStore_Adapter implements DataStore_Adapter, SeekableIterator //... Lembre se: uma classe só pode estender uma classe pai, mas pode implementar várias interfaces. class PDO_DataStore_Adapter extends PDO implements DataStore_Adapter, SeekableIterator //... Determinando Uma classe de objeto Muitas vezes é conveniente ser capaz de determinar se um determinado objeto é uma instância de uma determinada classe, ou se ela implementa uma interface específica. Isto pode ser feito usando o operador instanceof: if ($obj instanceof MyClass) echo "\$obj is an instance of MyClass"; Naturalmente, instanceof permite lhe inspecionar todas as classes ancestrais de seu objeto, bem como as interfaces. Exceções Mesmo que tenham sido um alimento básico da programação orientada a objeto por anos, as exceções apenas recentemente se tornaram parte do arsenal PHP. Exceções fornecem um mecanismo de controle de erro que é mais refinado do que o tratamento de falhas tradicional do PHP, e que permite um grau muito maior de controle. Existem várias diferenças fundamentais entre erros "regulares" de PHP e exceções: As exceções são objetos, criados (ou "lançados") quando ocorre um erro;

11 Exceções podem ser tratadas em diferentes pontos na execução de um script, e diferentes tipos de Exceções podem ser tratadas por partes separadas de um código de script; Todas as exceções não são fatais; Exceções podem ser lançadas a partir do método construct() em caso de falha; Exceções alteram o fluxo do aplicativo. A classe Exception Básica Como mencionado no parágrafo anterior, as exceções são objetos que devem ser instâncias diretas ou indiretas (por exemplo através de herança) da classe Exceção. Esta última é construída no PHP em si, e é declarada como segue: class Exception // The error message associated with this exception protected $message = Unknown Exception ; // The error code associated with this exception protected $code = 0; // The pathname of the file where the exception occurred protected $file; // The line of the file where the exception occurred protected $line; // Constructor function construct ($message = null, $code = 0); // Returns the message final function getmessage(); // Returns the error code final function getcode(); // Returns the file name final function getfile(); // Returns the file line final function getline(); // Returns an execution backtrace as an array final function gettrace(); // Returns a backtrace as a string final function gettraceasstring(); // Returns a string representation of the exception function tostring(); Quase todas as propriedades de uma exceção são automaticamente preenchidas para você pelo interpretador, de modo geral, você só precisa enviar uma mensagem e um código, e todas as informações restantes o PHP cuidará para você. Uma vez que uma exceção é uma classe comum (se embutida), você pode estendê la e efetivamente criar suas próprias exceções, proporcionando assim seus manipuladores de erro com qualquer informação adicional que sua aplicação requeira. Lançando Exceções As exceções são normalmente criadas e acionadas quando um erro ocorre usando a construtor throw: OBS: Embora seja uma prática comum, você não precisa criar o objeto Exception diretamente na expressão throw. if ($error) throw new Exception ("This is my error");

12 As exceções, em seguida, "borbulham" até que sejam tratadas pelo script ou causem uma exceção fatal. O tratamento de exceções é feita usando um bloco try... catch: try if ($error) throw new Exception ("This is my error"); catch (Exception $e) // Handle exception No exemplo acima, qualquer exceção que é lançada dentro do bloco try()será capturada e passada ao código que está dentro do bloco catch(), onde pode ser manipulada como você desejar. Observe como o método catch() da declaração obriga nos a informar o tipo de exceção que queremos para o catch(); uma das melhores características das exceções é o fato de que você pode decidir que tipo de exceção capturar. Desde que você é livre para estender a Classe pai Exception, isso significa que diferentes blocos aninhados try... catch podem ser usados para interceptar e lidar com diferentes tipos de erros: class myexception extends Exception try try try new PDO("mysql:dbname=zce"); throw new myexception("an unknown error occurred."); catch (PDOException $e) echo $e->getmessage(); catch(myexception $e) echo $e->getmessage(); catch (Exception $e) echo $e->getmessage(); Nesse exemplo, temos três blocos aninhados try... catch, o mais interno só irá capturar objetos PDOException, enquanto que o próximo vai pegar os objetos myexception comuns e as regiões mais periféricas irão capturar todas as outras exceções que poderíamos ter perdido. Ao invés de aninhar blocos try... catch como fizemos acima, você pode também apenas encadear os blocos catch: try new PDO("mysql:dbname=zce"); throw new myexception("an unknown error occurred."); catch (PDOException $e) echo $e->getmessage(); catch (myexception $e) echo $e->getmessage(); catch (Exception $e) echo $e->getmessage(); Uma vez que uma exceção tenha sido capturada, a execução do script seguirá diretamente após o último bloco catch. Para evitar erros fatais de exceções não capturadas, você poderia envolver toda a sua aplicação em um bloco try... catch o que, contudo, poderia ser bastante inconveniente. Felizmente, há uma solução melhor o PHP nos permite definir uma função "catch-all", que é

13 chamada automaticamente sempre que uma exceção não é tratada. Esta função é configurada chamando set_exception_handler(): function handleuncaughtexception($e) echo $e->getmessage(); set_exception_handler("handleuncaughtexception"); throw new Exception("You caught me!"); echo "This is never displayed"; Note que, devido o manipulador de exceção "catch all ser chamado apenas após a exceção ter borbulhada por todo o script, ele, assim como um bloco abrangente try... catch, é o fim da linha para o seu código. Em outras palavras, a exceção já causou um erro fatal, e a você será apenas dada a oportunidade de lidar com isso, mas não recuperar a partir dela. Por exemplo, o código acima nunca terá uma saída You caught me!, porque a exceção gerada irá disparar e causar o manipulador de exceção handleuncaughtexception(), fazendo com que o script termine. OBS: Se você deseja restaurar o manipulador de exceção anteriormente usado, seja ele o padrão de um erro fatal ou outro definido pelo usuário, você pode usar restore_exception_handler(). Exercícios: Construa um programa com as seguintes características: uma classe Conta abstrata com os métodos abstratos getsaldo(), sacar(valor) e depositar(valor). A seguir, cria duas classes, ContaCorrente e ContaPoupança, sendo que a classe ContaPoupanca deverá estender a classe ContaCorrente, mas contendo um método remunerar(tempo) que aplicará regras de capitalização simples, ou seja, a remuneração incide apenas sobre o montante principal, a uma taxa constante de 10% ao mês. Não se esqueça de definir a classe Conta como abstrata e de inicializar as duas classes (ContaPoupanca e ContaCorrente) com um saldo inicial. Instancie ambas as classes com um valor inicial de R$100,00, exiba os saldos, faça saques e remunere o capital da conta poupança exibindo os valores na tela. Tente fazer sem olhar a resposta abaixo: <?php abstract class Conta public $saldo; public abstract function getsaldo(); public abstract function sacar($valor); public abstract function depositar($valor); class ContaCorrente extends Conta public function construct($valor) $this->saldo = $valor; public function getsaldo() return $this->saldo; public function sacar($valor) if ($valor > $this->getsaldo()) $this->saldo-=$valor; else echo "IMPOSSÍVEL DEBITAR ESSE VALOR"; public function depositar($valor)

14 if ($valor < 0) echo "Você não pode sacar esse valor!"; else $this->saldo+=$valor; class ContaPoupanca extends ContaCorrente private static $taxa = 0.1; //10% ao mês public function construct($valor) $this->saldo = $valor; public function remunera($tempo) $this->saldo += $this->saldo*(self::$taxa * $tempo); $c1 = new ContaCorrente(100); $c2 = new ContaPoupanca(100); echo $c1->depositar(10); echo $c1->getsaldo(); echo "<hr />"; echo $c2->depositar(20); echo $c2->remunera(2); echo $c2->getsaldo();?> Introdução ao MVC com CodeIgniter e PHP Encontrei esse tutorial sobre MVC que utiliza um framework para permitir maior produtividade no desenvolvimento de software em PHP, conforme exigido na prática profissional da disciplina. Este tutorial foi extraído do endereço e adaptado ao português brasileiro. Este tutorial tem como objetivo abordar o desenvolvimento de aplicações web seguindo uma arquitetura conhecida como arquitetura MVC Model, View, Controller. A ferramenta utilizada neste tutorial será o framework CodeIgniter. O que é Framework? Em desenvolvimento de software, um framework ou arcabouço é uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica. Um framework pode atingir uma funcionalidade específica, por configuração, durante a programação de uma aplicação. Ao contrário das bibliotecas, é o framework quem dita o fluxo de controle da aplicação, chamado de Inversão de Controle. Ainda, framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação. (Extraído da Wikipédia) O que é o MVC? O MVC, Model View Controller, é um padrão de desenvolvimento de aplicações, normalmente, mas não forçosamente, web. A implementação de aplicações usando este padrão são feitas com recurso a frameworks, apesar de não ser obrigatória a utilização de um para seguir o padrão. Camadas e respectivas funções

15 Model: Nesta camada são definidas as regras de acesso e manipulação dos dados, que normalmente são armazenados em bases de dados ou arquivos, mas nada indica que sirva só para alojamento persistente dos dados. Pode ser usado para dados em memória volátil, por exemplo: memória RAM, apesar não se verificar tal utilização com muita freqüência. Todas as regras relacionadas com tratamento, obtenção e validação dos dados devem ser implementados nesta camada. View: Esta camada é responsável por gerar a forma como a resposta será apresentada, página web, formulário, relatório, etc. Controller: É a camada responsável por responder aos pedidos por parte do usuário. Sempre que um usuário faz um pedido ao servidor esta camada é a primeira a ser executada. Cadeia de Funcionamento Esta é a cadeia normal de funcionamento deste padrão, em que todas as camadas são usadas, o que nem sempre acontece: 1. O usuário efetua um pedido ao servidor 2. O controller processa o pedido do usuário. 3. O controller efetua uma chamada ao model, para obter ou manipular dados. 4. O model devolve os dados pedidos que serão passados ao view. 5. A view gera a apresentação dos dados, por exemplo: uma página HTML. Existe a possibilidade, bastante freqüente, de um pedido não precisar invocar o model. Basta querer gerar conteúdo que não necessite de qualquer tipo de dados. Neste caso o controller chamará diretamente o view. Existe também a possibilidade de não ser gerada uma view, por exemplo: o pedido ser uma atualização de dados. Apesar de não ser necessário é recomendado fazê lo, as regras de interação obrigam a que se notifique o usuário do sucesso de uma operação, ou seja, a utilização de uma view. Frameworks Existentes: Existem diversas frameworks que cobrem inúmeras linguagens, algumas só para web e outras mais genéricas: PHP: CodeIgniter, CakePHP, Symfony, Zend Framework, etc. Ruby: Ruby on Rails, etc. Python: Django, Zope, TuboGears, etc. Java: J2EE, Spring Framework, etc. Mono/.NET: Monorail, etc. Nota: Estes são os frameworks mais populares tendo em conta que são Software Livre, existem outros proprietários, que obviamente não recomendo. Por que o CodeIgniter? A resposta curta: porque simplesmente estou utilizando o no momento. A resposta comprida: os critérios para o tutorial foram os mesmos para o meu projeto. A questão da linguagem caiu obviamente para o PHP, quer pela sua popularidade em aplicações web, quer pelo fato de ser

16 bastante fácil obter serviços de alojamento que o suportem. Quanto ao framework, já utilizei o Symfony e já brinquei com o CakePHP e estou agora a utilizar o CodeIgniter. A escolha deste framework recaiu sobre os seguintes critérios: é simples e com um desempenho bastante bom e a sua abordagem é bastante mais direta que o CakePHP e o Symfony. Esta última é mais complexa, apesar de não ser de todo uma desvantagem. Escolhi o CodeIgniter por ter a "melhor relação custo/qualidade". Primeiros passos Para utilizar este framework basta qualquer servidor HTTP com suporte a PHP. É extremamente provável que a aplicação que deseja desenvolver necessite de uma base de dados, estão disponíveis os motores livres PostgreSQL, MySQL e SQLite juntamente com outros proprietários. O primeiro passo é a instalação do framework. Nada mais simples. Fazer o download do framework em Descomprimir o arquivo. E copiar o conteúdo do diretório CodeIgniter_x.x.xx para o seu diretório web. Nota: Evite desenvolver a partir do seu servidor de hospedagem. Se desejar trabalhar num ambiente semelhante a um ambiente real, será boa idéia recorrer a máquinas virtuais. Depois no browser abrir: se tudo correu bem então está pronto a começar a trabalhar. Como ambiente de desenvolvimento recomendo a IDE Eclipse com o plugin PHP Edit (ou mesmo o PDT) ou o NetBeans da SUN também com o plugin PHP. São ferramentas bastante robustas, de fácil utilização, que completam automaticamente o código e que funcionam bem com este framework. Podem fazer download a partir do site oficial e instalar o plugin PHP posteriormente, ou fazer o download personalizado com as funcionalidades que desejar no site yoxos. Estrutura de diretórios O framework é constituído por um conjunto de diretórios por onde estão espalhados os diversos componentes que o compõem. Ao instalar, verá que existe um diretório de documentação na raiz. Você poderá mantê lo ou apagá lo, poderá mantê lo durante o desenvolvimento da aplicação, mas deverá apagá lo quando disponibilizar a aplicação online, a não ser que queira disponibilizar essa documentação online. Existe também um arquivo index.php, este tem obrigatoriamente que existir, pois todos os pedidos à aplicação se iniciam a partir dele. Por fim, temos o diretório system onde existem os seguintes diretórios: application: este será o diretório onde fará o desenvolvimento da sua aplicação. Em condições normais será o único a sofrer alterações durante o desenvolvimento. cache: o cache do sistema, onde são criados arquivos temporários que permitem o aumento da performance da aplicação. codeigniter: o "motor" do framework. database: controladores de base de dados. fonts: tipos de letra. helpers: coleções de funções de auxilio ao desenvolvimento que, por exemplo, poderão ajudar a criar elementos de uma página de uma forma mais simples. language: arquivos com termos usados pela framework numa determinada língua. Instalação do Português padrão.

17 library: biblioteca com as classes de referência que podem ser utilizadas no desenvolvimento da aplicação. logs: logs de sistema plugins: similar aos helpers, só que em vez de uma coleção de funções os plugins apenas disponibilizam uma função. scaffolding: motor de scaffolding. Permite a gerar automaticamente páginas de visualização, criação, edição e eliminação de dados a partir de tabelas da base de dados. Esta ferramenta apenas deve ser utilizada durante o desenvolvimento, pois não oferece qualquer garantia de segurança. Este modelo de scaffolding deixou de ser oficialmente suportado e será substituído, pelo que não deverá ser abordado para já nesta série de tutoriais. Dentro da pasta application temos um conjunto de diretórios orientado para o desenvolvimento da aplicação. Os diretórios helpers, languages e libraries são equivalentes aos que encontramos no diretório system, mas neste caso destinam se a componentes criados especificamente para o seu projeto. Os diretórios restantes são os seguintes: config: arquivos de configuração. controllers: local onde criará os seus controllers. errors: páginas de erro personalizadas, como por exemplo o famoso 404 Not Found hooks: extensões ao CodeIgniter, onde poderá criar funções ou classes que serão executadas em determinados momentos do fluxo de processamento da aplicação. models: local onde criará os seus models. views: local onde criará as suas views. Olá mundo Para variar vamos começar com a criação de um programa Olá Mundo. A maneira mais simples de fazê lo é utilizar apenas um controlador. Vá à pasta controllers e crie um arquivo chamado primeiro.php e edite o. Nele escreva o seguinte código: <?php class Primeiro extends Controller //em PHP4: function Primeiro() function construct() parent::controller(); function index() echo 'Olá Mundo'?> Se digitar no seu web browser o endereço obterá uma página com o texto Olá Mundo. O exemplo começa pela declaração de uma classe que herda as características de classe do CodeIgniter Controller, todos os controllers são subclasses de Controller, o nome da classe e do arquivo são iguais, a única diferença é que o nome da classe deve começar sempre com maiúscula. Depois temos duas funções: a função Primeiro() é o construtor da classe, que neste caso apenas chama o construtor da sua

18 superclasse, este pode ser usado para carregar qualquer tipo de componente do sistema; a segunda função é uma atividade do controlador, normalmente todos os controladores têm uma função index que é chamada sempre que esse controlador é invocado sem que seja invocada qualquer função. Vamos acrescentar mais uma função ao nosso controlador: <?php class Primeiro extends Controller (...) function opiniao() echo 'Estou a gostar muito desta ferramenta';?> OBS: o PHP 5 utiliza o construtor construct(). Esta função é similar à anterior, apenas serve para demonstrar o funcionamento dos endereços. Neste caso, para invocar esta atividade do controlador deverá digitar o endereço: A estrutura padrão dos endereços é:...index.php/nome do Controlador/Atividade/Informação complementar Caso não seja especificada nenhuma atividade, será sempre executada a função index, como no primeiro exemplo, pelo que deverá existir sempre um index em cada controlador. OBS: Agora, é bom configurar o arquivo config.php na pasta config dentro da pasta application. Nela, existe uma linha $config['base_url'] = " Altere a para o endereço que você vai utilizar em seu aplicativo. Por exemplo: Views As views são arquivos PHP que contêm código HTML e chamadas PHP responsáveis pela apresentação dos dados. No exemplo anterior eram os controladores que apresentavam qualquer conteúdo na página, o que não é prático nem segue a norma MVC, pelo que vamos fazer algumas alterações. Primeiro vamos acrescentar uma nova view, no diretório views crie o arquivo mensagem.php com o seguinte conteúdo: <html> <head> <title><?php echo $title?></title> </head> <body> <h1><?php echo $message?></h1> </body> </html>

19 Esta view será invocada por ambos os controladores e como podemos observar serão passadas duas variáveis: title que definirá o título a aparecer na janela do browser e message que terá a mensagem que aparecerá na página web. Para utilizar a view vamos alterar ambas as ações do controlador. <?php class Primeiro extends Controller //em PHP4: function Primeiro() function construct() parent::controller(); function index() $data['title']='primeiro Exemplo'; $data['message']='olá Mundo!'; $this->load->view('mensagem',$data); function opiniao() $data['title']='a minha opinião'; $data['message']='estou a gostar muito desta ferramenta'; $this->load->view('mensagem',$data);?> Agora o funcionamento ficou ligeiramente alterado. Para passar dados a uma view é necessário criar um vetor associativo em que o índice terá correspondência a uma variável com o mesmo nome na view. A última linha de cada atividade é uma chamada à view onde o primeiro parâmetro corresponde ao nome do arquivo da view (a extensão PHP pode ser omitida), e o segundo corresponde à estrutura com os dados a serem passados. Não há qualquer obrigação de passar dados para uma view, pelo que nestes casos deverá apenas invocar a view apenas com o primeiro parâmetro. Para uma view podem ser passados dados de qualquer tipo, sejam eles numéricos, texto, objetos ou outras estruturas de dados. O próximo exemplo demonstra como passar um vetor para a view e como este normalmente é tratado. Crie uma nova view chamada topics.php com o seguinte conteúdo: <html> <head> <title>uma lista de tópicos</title> </head> <body> <ul> <?php foreach($topics as $topic):?> <li><?php echo $topic?></li> <?php endforeach?> </ul> </body> </html> Aqui a única diferença é que é usado um ciclo foreach para escrever cada um dos elementos na página. Para pôr esta view para funcionar necessitamos criar uma atividade no nosso controlador que o invoque, por isso vamos adicionar a função topics() no arquivo primeiro.php:

20 function topics() $data['topics'] = array('model', 'View', 'Controller'); $this->load->view('topics', $data); Nada mais simples. No diretório views é possível criar subdiretórios para organizá las. Para invocar essas views deverá incluir o nome do diretório na sua chamada: $this->load->view('directory/topics'); E assim terminamos este capítulo, no próximo serão abordados o uso de bases de dados e os modelos. Acesso a dados Depois de termos dado uma visão global ao padrão MVC e de dar os primeiros passos com o framework CodeIgniter, abordaremos uma parte também importante de uma aplicação web: o acesso a bases de dados. Criação da base de dados e configurar o acesso Ao contrário de alguns frameworks, como por exemplo, o Symfony, o Django, etc., o CodeIgniter não possui nenhum mecanismo próprio para criação de bases de dados, à semelhança do que acontece no Ruby on Rails ou no CakePHP, motivo pelo qual teremos que criá lo. O CodeIgniter segue um padrão de acesso a dados conhecido como Active Record que será demonstrado mais à frente. Para este capítulo, apenas iremos utilizar a seguinte tabela utilizando o MySQL: CREATE TABLE `users` ( `id` int(11) NOT NULL auto_increment, `username` varchar(20) character set latin1 NOT NULL, `passwd` varchar(40) character set latin1 NOT NULL, `salt` varchar(40) character set latin1 NOT NULL, ` ` varchar(100) character set latin1 NOT NULL, PRIMARY KEY (`id`) ); Agora vamos configurar o acesso à base de dados no CodeIgniter, dentro do diretório application/config editem o arquivo database.php: $active_group = "default"; $active_record = TRUE; $db['default']['hostname'] = "localhost"; $db['default']['username'] = "root"; $db['default']['password'] = ""; $db['default']['database'] = "ads01"; $db['default']['dbdriver'] = "mysql"; $db['default']['dbprefix'] = ""; $db['default']['pconnect'] = TRUE; $db['default']['db_debug'] = TRUE; $db['default']['cache_on'] = FALSE; $db['default']['cachedir'] = ""; $db['default']['char_set'] = "utf8"; $db['default']['dbcollat'] = "utf8_general_ci";

21 O arquivo em si não tem muito que saber. Basta alterar o valor de cada elemento com os dados respectivos. Para seguir este tutorial será necessário ter a variável $active_record fixada como TRUE. O passo seguinte será configurar o acesso à classe de base de dados. Isto pode ser feito de dois modos: ativar o carregamento automático da classe ou carregá la no construtor de cada Controller ou Model: //---Carregamento "Manual"--- //em cada controlador ou modelo invocar //$this->load->database() class User extends Controller //em PHP4: function Nome() function construct() parent::controller(); $this->load->database(); //---Carregamento automático //para carregamento automático editar config/autoload.php //e adicionar 'database' ao array $autoload['libraries'] $autoload['libraries'] = array('database'); Para verificar se a conexão à base de dados está funcionando basta executar o seu browser e abrir o url da sua aplicação. Se não foi informado algum erro, então está tudo ok. Nota: A escolha de utilização de carregamento automático ou não classes está dependente do tipo de projeto. Se for uma classe utilizada por todos os controladores recomenda se o carregamento automático de modo a poupar algum esforço. Se essa classe apenas for utilizada por algumas funcionalidades então recomendo que se faça o carregamento apenas quando necessárias para evitar sobrecarregar os controladores com material desnecessário. Ler registros da base de dados A exibição de dados é certamente a tarefa mais comum em aplicações web. Para demonstrar como realizar este tipo de tarefas vamos criar duas atividades num controlador User em controllers/user.php: user/all user/show/$id Para testar este exemplo recomendo que introduzam alguns dados na tabela users: <?php class User extends Controller function construct() parent::controller(); $this->load->helper('url'); function all() //selecciona todos os registros de users

22 $data['list']=$this->db->get('users'); //envia a lista de dados para a view $this->load->view('user/all',$data); function show() //vai buscar o id ao url, 3º elemento //se não for escrito retorna 0 $username = $this->uri->segment(3,0);?> if($username == 0) //se o id não foi fornecido redireciona redirect('user/all'); else $result = $this->db->get_where( 'users', array('username' => $username)); //selecciona a única linha do resultado $data['user'] = $result->row(); $this->load->view('user/show',$data); E agora as duas user/all e user/show: user/all: <h1>lista de usuários</h1> <table> <tr> <th>username</th> <th> </th> <th></th> </tr> <?php foreach($list->result() as $user):?> <tr> <td><?php echo $user->username?></td> <td><?php echo $user-> ?></td> <td><?php echo anchor('user/show/'.$user->username);?></td> </tr> <?php endforeach?> </table> user/show: <p><b>username:</b> <?php echo $user->username?></p> <p><b> </b> <?php echo $user-> ?></p> Os métodos mais importantes para este exemplo são: $this->db->get('tabela'): Devolve todos os dados da tabela (SELECT * FROM tabela)

23 $this->db->get_where('tabela', critérios): seleciona todos os registro que correspondam a um critério. Os registros devolvidos são armazenados numa estrutura em memória da qual se pode extrair cada um deles como instância de um objeto Active Record, como neste exemplo, ou alternativamente num array associativo. Neste exemplo foram usados dois métodos: result() e row(). O método result(), usado na view user/all gera uma lista de objetos row, cada um deles representa um registro. O método row() extrai diretamente uma linha, o que é muito útil para casos como este em que a consulta à base de dados devolve uma única linha, caso devolva mais que uma linha o método row() devolverá apenas a primeira linha. Neste exemplo utilizou se o helper url. Esse fornece, entre outras, a função anchor que nos permite criar hyperlinks de forma dinâmica para outras funcionalidades da nossa aplicação. No exemplo acima podemos ver que esta é utilizada para criar ligações para a página show de cada registro. Outra função a destacar que utilizamos é a função uri->segment que extrai elementos da nossa url, neste caso o username. O segundo parâmetro é opcional e indica o valor por omissão caso se invoque essa funcionalidade sem fornecer o username. Modelos Como foi explicado no primeiro tutorial, no padrão MVC o Model é responsável pela abstração do acesso a dados. O que se passa no CodeIgniter é que o padrão Active Record já faz isso de uma forma mais geral. É possível criar um projeto sem ter que implementar classes do tipo modelo, mas para casos mais específicos, como consultas mais complexas, é recomendado implementar essas funções numa classe Model. Podemos reestruturar o exemplo anterior tendo em conta os seguintes aspectos: Estamos requisitando à tabela todos os campos de um registro quando apenas utilizamos dois deles Podemos criar métodos para obter os dados prontos a ser exibidos, encurtando o tamanho dos nossos controladores Para isso vamos criar uma classe user_model.php no diretório models: <?php class User_model extends Model function getdisplayablebyusername($username) //indica os campos $this->db->select('username, '); $result = $this->db->get_where( 'users', array('username' => $username)); return $result->row(); function getalldisplayable() $this->db->select('username, '); $result = $this->db->get('users'); return $result->result();

24 Neste exemplo, criamos duas funções que retornam os resultados apenas com os dados que desejamos exibir. O método select da classe db encarrega se de definir os campos a retornar pela próxima consulta à base de dados. Agora falta nos alterar o controlador para utilizar o model. <?php class User extends Controller function construct() parent::controller(); $this->load->helper('url'); $this->load->model('user_model'); function all() //selecciona todos os registros de users //a ser exibidos $data['list'] = $this->user_model->getalldisplayable(); $this->load->view('user/all',$data); function show() //vai buscar o id ao url, 3º elemento //se não for escrito retorna 0 $username = $this->uri->segment(3,0);?> if($username == 0) redirect('user/all'); else $data['user'] = $this->user_model->getdisplayablebyusername($username); $this->load->view('user/show',$data); Para completar, como o método GetAllDisplayable() já retorna uma lista result, devemos ir ao código da view user/all e remover a chamada ao método result() no ciclo foreach para que tudo funcione devidamente. Inserir dados, Formulários e Validação No que diz respeito à validação, será usado o novo sistema form_validation introduzido na versão Em qualquer página web com validação de dados existe o seguinte ciclo de validação: 1. Pedir os dados ao usuário; 2. Verificar os dados; 3. Caso os dados não sejam válidos exibir erros e voltar ao ponto um; 4. Tratar os dados.

25 Começando pela solicitação de dados, vamos criar uma view user/register.php com o seguinte conteúdo: <?php echo validation_errors()?> <?php echo form_open('user/register')?> <fieldset> <label for="username">usuário: </label> <input type="text" id="username" value="" /> <label for="password">palavra-passe:</label> <input type="password" id="password" value="" /> <label for="confirm">confirmar:</label> <input type="password" id="confirm" value="" /> <label for=" "> </label> <input type="text" id=" " value="" /> </fieldset> <input type="submit" value="enviar" /> </form> A view acima é um formulário típico em PHP/HTML. Na primeira linha serão impressas as mensagens de erro caso a validação dos dados falhe. Recorre se também à função form_tag para gerar uma tag form que chamará o controlador responsável por validar e armazenar os dados. Agora para armazenar os dados resta nos criar o controlador para o efeito. Mas antes disso vamos preparar a nossa classe modelo para guardar este tipo de dados. Lembre se que estamos a criar um formulário para registro de usuários e dados sensíveis como a password não serão armazenados no formato em que são inseridos. A palavra passe será transformada antes de ser armazenada recorrendo à função de hashing sha1 utilizando uma chave salt para impedir a obtenção da senha através de dicionários de hash conhecidos. Ao modelo user_model.php serão acrescentados os seguintes métodos: <?php private function hashpassword($password) //gera uma string salt aleatória $data['salt'] = sha1(rand()); //gera o hashing da password $data['password'] = sha1($data['salt'].$password); return $data; function register() $data['username'] = $this->input->post('username'); $hash = $this->hashpassword($this->input->post('passwd')); $data['passwd'] = $hash['password']; $data['salt'] = $hash['salt']; $data[' '] = $this->input->post(' '); $this->db->insert('users', $data);?> O método register guarda os dados, depois de codificar a password. Usando o método insert do Active Record a inserção de dados não poderia ser mais simples, basta um array associativo em que o índice corresponde ao nome do campo na tabela e depois passá lo como argumento da função insert. Para obter os dados enviados pelo formulário podem usar o método $this->input->post('nome') ou acessar diretamente ao respectivo elemento no

26 array post: $_POST['nome']. O método hashpassword é responsável apenas por gerar um hash e um salt para a senha. Por fim, no controlador user, vamos criar um método register que, neste exemplo, será responsável por criar as regras e executar o ciclo de validação: <?php function register() //definição da lista de regras a aplicar $config=array( array( 'field' => 'username', 'label' => 'Nome de Usuário', 'rules' => 'required min_length[4] max_length[20]' ), array( 'field' => 'passwd', 'label' => 'Palavra Passe', 'rules' => 'required min_length[6] matches[confirm]' ), array( 'field' => 'confirm', 'label' => 'Confirmação de Palavra Passe', 'rules' => 'required' ), array( 'field' => ' ', 'label' => ' ', 'rules' => 'required valid_ ' ) ); //atribui a lista de regras à próxima execução da validação $this->form_validation->set_rules($config); //Teste de validação de dados if(($this->form_validation->run())==false) //caso a validação não tenha tido sucesso //ou ainda não foi invocada $this->load->view('user/register'); else //se a validação teve sucesso $this->user_model->register(); //redirecciona para uma página de sucesso redirect('user/success');?> Nesse exemplo, recorremos ao método de criar um array com todas as regras de validação a aplicar. Nesse array, cada elemento possui três campos: field: possui o nome do campo a avaliar, deverá obrigatoriamente corresponder ao id do elemento do formulário que fornecerá esses dados. label: contém uma identificação do campo, compreensível pelos usuários, a aparecer na mensagem de erro.

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP AULA 4 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.

Leia mais

http://www.multside.com.br CODE IGNITER INSTALAÇÃO & BANCO DE DADOS

http://www.multside.com.br CODE IGNITER INSTALAÇÃO & BANCO DE DADOS CODE IGNITER INSTALAÇÃO & BANCO DE DADOS INSTALAÇÃO Instalar o code-igniter é muito simples, basta que você tenha um servidor que rode PHP 5 (para saber consulte a documentação PHP do seu servidor). Após

Leia mais

sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p://www.digitale.com.br h7p://leveme.

sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p://www.digitale.com.br h7p://leveme. sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p://www.digitale.com.br h7p://leveme.la/rogerio definição - é uma forma de programar e organizar um sistema

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming Curso de PHP FATEC - Jundiaí A programação orientada a objetos (object-oriented oriented programming OOP) é um conjunto de técnicas t para organizar o código c em torno de entidades ou objetos representados

Leia mais

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL. Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2012 Edição 7 Listando e Gravando Listando itens em ComboBox e gravando os dados no

Leia mais

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo; um objeto; é definido; Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo; class ClasseBase{ é instanciado; $objetobase = new ClasseBase; Caso queira,

Leia mais

2 echo "PHP e outros.";

2 echo PHP e outros.; PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento

Leia mais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre

Leia mais

NOVIDADES DO JAVA PARA PROGRAMADORES C

NOVIDADES DO JAVA PARA PROGRAMADORES C PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o Conceito de Classes e Objetos Capacitar para a criação de objetos simples

Leia mais

JDBC Java Database Connectivity

JDBC Java Database Connectivity 5 JDBC Java Database Connectivity Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Trabalhar com bancos de dados em aplicações web em JSP através das classes

Leia mais

Scriptlets e Formulários

Scriptlets e Formulários 2 Scriptlets e Formulários Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Permitir ao aluno aprender a criar um novo projeto Java para web no Netbeans IDE,

Leia mais

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando

Leia mais

mkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos

mkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos Programando em PHP www.guilhermepontes.eti.br lgapontes@gmail.com Criando uma Calculadora Primeiramente deve se criar uma estrutura para armazenar os arquivos necessários para o funcionamento da calculadora.

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

Parte I. Demoiselle Mail

Parte I. Demoiselle Mail Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

Programando em PHP. Conceitos Básicos

Programando em PHP. Conceitos Básicos Programando em PHP www.guilhermepontes.eti.br lgapontes@gmail.com Conceitos Básicos Todo o escopo deste estudo estará voltado para a criação de sites com o uso dos diversos recursos de programação web

Leia mais

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG Página 1 de 26 Sumário Introdução...3 Layout do Webmail...4 Zimbra: Nível Intermediário...5 Fazer

Leia mais

Introdução a Java. Hélder Nunes

Introdução a Java. Hélder Nunes Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais

Leia mais

02 - Usando o SiteMaster - Informações importantes

02 - Usando o SiteMaster - Informações importantes 01 - Apresentação do SiteMaster - News Edition O SiteMaster foi desenvolvido para ser um sistema simples de gerenciamento de notícias, instalado em seu próprio computador e com configuração simplificada,

Leia mais

Criando um script simples

Criando um script simples Criando um script simples As ferramentas de script Diferente de muitas linguagens de programação, você não precisará de quaisquer softwares especiais para criar scripts de JavaScript. A primeira coisa

Leia mais

PHP (Seções, Cookies e Banco de Dados)

PHP (Seções, Cookies e Banco de Dados) PHP (Seções, Cookies e Banco de Dados) André Tavares da Silva andre.silva@udesc.br Seções Basicamente, as seções são métodos que preservam determinados dados ativos enquanto o navegador do cliente estiver

Leia mais

Conceitos de extensões Joomla!

Conceitos de extensões Joomla! capítulo 1 Conceitos de extensões Joomla! Entendendo o que é extensão Extensão pode ser entendida como uma pequena aplicação desenvolvida com regras de construção estabelecidas pelo ambiente Joomla!. É

Leia mais

MANUAL WEBMAIL HORDE-V.01 IBILCE/UNESP

MANUAL WEBMAIL HORDE-V.01 IBILCE/UNESP MANUAL WEBMAIL HORDE-V.01 IBILCE/UNESP ÍNDICE 01 - COMO UTILIZAR SEU EMAIL...02 02 CONFIGURANDO PARA SEMPRE QUE ABRIR O EMAIL ABRIR A CAIXA DE ENTRADA...03 03 - COMO LER OS EMAILS...05 04 - COMO RETIRAR

Leia mais

Lazarus pelo SVN Linux/Windows

Lazarus pelo SVN Linux/Windows Lazarus pelo SVN Linux/Windows Sei que não faltam artigos sobre como obter e compilar o Lazarus e o FPC pelo SVN, mas sei também que nunca é de mais divulgar um pouco mais e talvez escrever algo diferente.

Leia mais

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo.

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo. Manual de Instruções ECO Editor de Conteúdo Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo. O ECO é um sistema amigável e intui?vo, mas abaixo você pode?rar eventuais dúvidas e aproveitar

Leia mais

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados Tutorial Plone 4 Manutenção de Sites Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados Sumário Introdução 1 Como fazer a autenticação do usuário 1.1 Através do

Leia mais

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela? Exercícios sobre Linguagem PHP: 1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela? 2) Considere a linguagem de programação PHP e seus operadores. A execução da sentença:

Leia mais

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o

Leia mais

Aula 03 - Projeto Java Web

Aula 03 - Projeto Java Web Aula 03 - Projeto Java Web Para criação de um projeto java web, vá em File/New. Escolha o projeto: Em seguida, na caixa Categorias selecione Java Web. Feito isso, na caixa à direita selecione Aplicação

Leia mais

Manual Administrador - Mídia System

Manual Administrador - Mídia System Manual Administrador - Mídia System Logo após cadastrarmos sua Empresa em nosso sistema, será enviado um e-mail confirmando as informações de acesso do Administrador do sistema. Obs: Caso não tenha recebido

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

Programação Web com PHP. Prof. Wylliams Barbosa Santos wylliamss@gmail.com Optativa IV Projetos de Sistemas Web

Programação Web com PHP. Prof. Wylliams Barbosa Santos wylliamss@gmail.com Optativa IV Projetos de Sistemas Web Programação Web com PHP Prof. Wylliams Barbosa Santos wylliamss@gmail.com Optativa IV Projetos de Sistemas Web Agenda O que é PHP? O que da pra fazer com PHP? Como a web funciona? Onde, quando e por que

Leia mais

Transações Seguras em Bancos de Dados (MySQL)

Transações Seguras em Bancos de Dados (MySQL) Transações Seguras em Bancos de Dados (MySQL) Índice Entendendo os storage engines do MySQL 5 1 As ferramentas 1 Mais algumas coisas que você deve saber 1 Com a mão na massa 2 Mais ferramentas Usando o

Leia mais

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Trabalhando com conexão ao banco de dados MySQL no Lazarus Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 4 O Componente Trabalhando com conexão ao banco de dados MySQL no Lazarus Ano: 03/2011

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

Manual das funcionalidades Webmail AASP

Manual das funcionalidades Webmail AASP Manual das funcionalidades Webmail AASP 1. Configurações iniciais 2. Regras 3. Histórico da conta 4. Autorresposta 5. Dados de acesso (alterando senha de acesso) 6. Identidade (assinatura) 7. Redirecionamento

Leia mais

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA FERRAMENTAS DE COLABORAÇÃO CORPORATIVA Compartilhamento de Arquivos no Google Drive Sumário (Clique sobre a opção desejada para ir direto à página correspondente) Utilização do Google Grupos Introdução...

Leia mais

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Satélite Manual de instalação e configuração CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Índice Índice 1.Informações gerais 1.1.Sobre este manual 1.2.Visão geral do sistema 1.3.História

Leia mais

Instalando o WordPress em localhost

Instalando o WordPress em localhost Instalando o WordPress em localhost WordPress sem Mistério LEE ARAUJO htto://wordpresssemmisterio.com.br Sumário Instalando o WordPress em Localhost... 2 O Servidor web... 3 Iniciando o servidor... 6 Criação

Leia mais

Google Drive. Passos. Configurando o Google Drive

Google Drive. Passos. Configurando o Google Drive Google Drive um sistema de armazenagem de arquivos ligado à sua conta Google e acessível via Internet, desta forma você pode acessar seus arquivos a partir de qualquer dispositivo que tenha acesso à Internet.

Leia mais

English Português. By erickalves 25 Julho, 2009-01:08. Devido à política (#) de segurança. Encontrar Blogs Crie o seu blog de graça Ganhe prêmios

English Português. By erickalves 25 Julho, 2009-01:08. Devido à política (#) de segurança. Encontrar Blogs Crie o seu blog de graça Ganhe prêmios Encontrar Blogs Crie o seu blog de graça Ganhe prêmios English Português Cel: +55 (21) 7417-9918 E-mail: erick@lithic.com.br Inserindo dados no banco em PHP + Ajax + jquery + Mysql + Validação (/pt-br/blog/tutoriais

Leia mais

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 11-1. INTRODUÇÃO TRIGGERS (GATILHOS OU AUTOMATISMOS) Desenvolver uma aplicação para gerenciar os dados significa criar uma aplicação que faça o controle sobre todo ambiente desde a interface, passando

Leia mais

Parte I. Orientação a objetos no PHP. Contato: <lara.popov@ifsc.edu.br> Site: http://professores.chapeco.ifsc.edu.br/lara/

Parte I. Orientação a objetos no PHP. Contato: <lara.popov@ifsc.edu.br> Site: http://professores.chapeco.ifsc.edu.br/lara/ Parte I Programação para WEB II Orientação a objetos no PHP Contato: Site: http://professores.chapeco.ifsc.edu.br/lara/ Programação para WEB II 1 PHP Estruturado Os programadores

Leia mais

GUIA INTEGRA SERVICES E STATUS MONITOR

GUIA INTEGRA SERVICES E STATUS MONITOR GUIA INTEGRA SERVICES E STATUS MONITOR 1 - Integra Services Atenção: o Integra Services está disponível a partir da versão 2.0 do software Urano Integra. O Integra Services é um aplicativo que faz parte

Leia mais

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova. 3.5 Páginas: Ao clicar em Páginas, são exibidas todas as páginas criadas para o Blog. No nosso exemplo já existirá uma página com o Título Página de Exemplo, criada quando o WorPress foi instalado. Ao

Leia mais

Manual Captura S_Line

Manual Captura S_Line Sumário 1. Introdução... 2 2. Configuração Inicial... 2 2.1. Requisitos... 2 2.2. Downloads... 2 2.3. Instalação/Abrir... 3 3. Sistema... 4 3.1. Abrir Usuário... 4 3.2. Nova Senha... 4 3.3. Propriedades

Leia mais

Persistência de Dados

Persistência de Dados Persistência de s Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Tecnologia de Sistemas de Informação Estrutura de s II - DAD

Leia mais

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. 1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. Editando um Artigo 4.3. Excluindo um Artigo 4.4. Publicar

Leia mais

WEBDESIGN. Professor: Paulo Trentin paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira

WEBDESIGN. Professor: Paulo Trentin paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira WEBDESIGN Professor: Paulo Trentin paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira 1 CDI - Curso de Webdesign - Prof. Paulo Trentin Objetivos para esta aula Debater sobre

Leia mais

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet. 1. Descrição Geral Este manual descreve as operações disponíveis no módulo VTWEB Client, cuja finalidade é gerenciar cadastros de funcionários, realização de pedidos e controle financeiro dos pedidos.

Leia mais

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5. Desenvolvendo aplicações em camadas com PHP 5. Talvez a primeira vista você ache estranha a palavra Camada em programação, mas o que vem a ser Camada? Segundo o dicionário: Camada 1 - Qualquer matéria

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando

Leia mais

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL Urano Indústria de Balanças e Equipamentos Eletrônicos Ltda. Rua Irmão Pedro 709 Vila Rosa Canoas RS Fone: (51) 3462.8700 Fax: (51) 3477.4441 Características do Software Urano Integra 2.2 Data: 12/05/2014

Leia mais

Especificação do 3º Trabalho

Especificação do 3º Trabalho Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,

Leia mais

MANUAL DO PVP SUMÁRIO

MANUAL DO PVP SUMÁRIO Manual PVP - Professores SUMÁRIO 1 INTRODUÇÃO... 6 2 ACESSANDO O PVP... 8 3 TELA PRINCIPAL... 10 3.1 USUÁRIO... 10 3.2 INICIAL/PARAR... 10 3.3 RELATÓRIO... 10 3.4 INSTITUIÇÕES... 11 3.5 CONFIGURAR... 11

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP O PHP através da versão 5, veio desenvolvido com suporte a programação orientada a objetos. O que significa isso? Que a partir da versão 5 é possível criar bibliotecas

Leia mais

Manual do Visualizador NF e KEY BEST

Manual do Visualizador NF e KEY BEST Manual do Visualizador NF e KEY BEST Versão 1.0 Maio/2011 INDICE SOBRE O VISUALIZADOR...................................................... 02 RISCOS POSSÍVEIS PARA O EMITENTE DA NOTA FISCAL ELETRÔNICA.................

Leia mais

Portal do Senac: Área Exclusiva para Alunos Manual de Navegação e Operação

Portal do Senac: Área Exclusiva para Alunos Manual de Navegação e Operação Portal do Senac: Área Exclusiva para Alunos Índice 1. Introdução... 4 2. Acessando a área exclusiva... 5 3. Trocando a senha... 6 4. Mensagens... 7 4.1. Conhecendo a tela principal... 7 4.2. Criando uma

Leia mais

PHP Material de aula prof. Toninho (8º Ano)

PHP Material de aula prof. Toninho (8º Ano) Na aula anterior entendemos como se faz o acesso aos nossos arquivos PHP; Como construir um script em php. Nesta aula (3) vamos entender: Como roda o PHP Inserindo comentários Visualizando páginas a partir

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

Leia mais

Gravando uma Áudio Conferência

Gravando uma Áudio Conferência Gravando uma Áudio Conferência Para iniciar a gravação da áudio conferência, digite *2. Você ouvirá a seguinte mensagem: Para iniciar a gravação da conferência pressione 1, para cancelar pressione * Ao

Leia mais

USANDO O ROUNDCUBE WEBMAIL

USANDO O ROUNDCUBE WEBMAIL USANDO O ROUNDCUBE WEBMAIL ATENÇÃO! Para utilizar este tutorial não se esqueça: Onde estiver escrito seusite.com.br substitua pelo ENDEREÇO do seu site (domínio). Ex.: Se o endereço do seu site é casadecarnessilva.net

Leia mais

Apresentação. Nossa sugestão é que você experimente e não tenha medo de clicar!!!

Apresentação. Nossa sugestão é que você experimente e não tenha medo de clicar!!! Apresentação Este manual é uma orientação para os participantes de cursos no ambiente Moodle do INSTITUTO PRISMA. Tem como objetivo orientar sobre as ações básicas de acesso e utilização do ambiente virtual

Leia mais

Validando dados de páginas WEB

Validando dados de páginas WEB Validando dados de páginas WEB Para que validar os dados? Validar os dados informados pelo usuário garante que sua aplicação funcione corretamente e as informações contidas nela tenha algum sentido. Outro

Leia mais

Sensor de temperatura Parte 5 Cleiton Bueno www.cleitonbueno.wordpress.com. Preparando o ambiente do Banco de dados Mysql

Sensor de temperatura Parte 5 Cleiton Bueno www.cleitonbueno.wordpress.com. Preparando o ambiente do Banco de dados Mysql Criar database: Sensor de temperatura Parte 5 Cleiton Bueno www.cleitonbueno.wordpress.com Preparando o ambiente do Banco de dados Mysql CREATE DATABASE `tempuino` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

Leia mais

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO 12. DOCUMENTAÇÃO Na plataforma Java SE 7, há cerca de 4000 classes e interfaces disponíveis para utilizarmos em nossas aplicações Podemos visualizar a documentação dessas classes e interfaces

Leia mais

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR 1 Índice: 01- Acesso ao WEBMAIL 02- Enviar uma mensagem 03- Anexar um arquivo em uma mensagem 04- Ler/Abrir uma mensagem 05- Responder uma mensagem

Leia mais

MANUAL DE UTILIZAÇÃO

MANUAL DE UTILIZAÇÃO MANUAL DE UTILIZAÇÃO Módulo de operação Ativo Bem vindo à Vorage CRM! Nas próximas paginas apresentaremos o funcionamento da plataforma e ensinaremos como iniciar uma operação básica através do nosso sistema,

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA RESUMO DE AULA CRIAÇÃO E MANIPULAÇÃO DO BANCO DE DADOS

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH! UNIVERSIDADE DE SÃO PAULO (USP) ESCOLA DE ARTES, CIÊNCIAS E HUMANIDADES (EACH) TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH! Autoria e revisão por: PET Sistemas

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo

Leia mais

Desenvolvimento de Aplicações para Internet Aula 8

Desenvolvimento de Aplicações para Internet Aula 8 Desenvolvimento de Aplicações para Internet Aula 8 Celso Olivete Júnior olivete@fct.unesp.br na aula passada Orientação a Objetos Classes Objetos Construtores Destrutores 2 na aula passada Construtores

Leia mais

MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO. Motor Periférico Versão 8.0

MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO. Motor Periférico Versão 8.0 MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO Motor Periférico Versão 8.0 1. Apresentação... 3 2. Instalação do Java... 3 2.1 Download e Instalação... 3 2.2 Verificar Instalação... 3 3. Download do Motor Periférico...

Leia mais

Procedimentos para Reinstalação do Sisloc

Procedimentos para Reinstalação do Sisloc Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...

Leia mais

MANUAL DO ANIMAIL 1.0.0.1142 Terti Software

MANUAL DO ANIMAIL 1.0.0.1142 Terti Software O Animail é um software para criar campanhas de envio de email (email Marketing). Você pode criar diversas campanhas para públicos diferenciados. Tela Principal do sistema Para melhor apresentar o sistema,

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

CONVENÇÃO DE CÓDIGO JAVA

CONVENÇÃO DE CÓDIGO JAVA CONVENÇÃO DE CÓDIGO JAVA Eligiane Ceron - Abril de 2012 Versão 1.0 Conteúdo Considerações iniciais... 2 Introdução... 2 Extensão de arquivos... 2 Arquivos de código Java... 2 Comentários iniciais... 2

Leia mais

Acessando um Banco de Dados

Acessando um Banco de Dados Acessando um Banco de Dados Introdução Agora que você já está craque em JSP e já instalou seu servidor, vamos direto para a parte prática! Neste tutorial vamos aprender a acessar um banco de dados. Para

Leia mais

Segurança de Acesso a Banco de Dados no MS SQL Server

Segurança de Acesso a Banco de Dados no MS SQL Server Segurança de Acesso a Banco de Dados no MS SQL Server Para efetuar com sucesso os exemplos que serão mostrados a seguir é necessário que exista no SQL Server uma pessoa que se conecte como Administrador,

Leia mais

Programação WEB II. Sessions e Cookies. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Programação WEB II. Sessions e Cookies. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza Sessions e Cookies progweb2@thiagomiranda.net Conteúdos Os materiais de aula, apostilas e outras informações estarão disponíveis em: www.thiagomiranda.net Cookies e Sessions Geralmente, um bom projeto

Leia mais

Cenários do CEL. Acessar ao sistema

Cenários do CEL. Acessar ao sistema Cenários do CEL Acessar ao sistema Permitir que o usuário acesse ao Sistema de Léxicos e Cenários nas seguintes condições: logando-se, quando já estiver cadastrado; ou incluindo usuário independente, quando

Leia mais

INTRODUÇÃO: 1 - Conectando na sua conta

INTRODUÇÃO: 1 - Conectando na sua conta INTRODUÇÃO: Com certeza a reação da maioria dos que lerem esse mini manual e utilizarem o servidor vão pensar: "mas porque eu tenho que usar um console se em casa eu tenho uma interface gráfica bonito

Leia mais

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET Programação para Internet I Aula 10 PHP: Trabalhando com Banco de Dados leticia@cafw.ufsm.br Acessando

Leia mais

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC Módulo 5 No módulo anterior adaptamos nosso projeto para persistir as informações no banco de dados utilizando as facilidades da extensão demoiselle-jpa. Experimentamos o controle transacional do Framework

Leia mais

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela Aula 01 - Formatações prontas e Sumário Formatar como Tabela Formatar como Tabela (cont.) Alterando as formatações aplicadas e adicionando novos itens Removendo a formatação de tabela aplicada Formatação

Leia mais

WF Processos. Manual de Instruções

WF Processos. Manual de Instruções WF Processos Manual de Instruções O WF Processos é um sistema simples e fácil de ser utilizado, contudo para ajudar os novos usuários a se familiarizarem com o sistema, criamos este manual. Recomendamos

Leia mais

Microsoft Access XP Módulo Um

Microsoft Access XP Módulo Um Microsoft Access XP Módulo Um Neste primeiro módulo de aula do curso completo de Access XP vamos nos dedicar ao estudo de alguns termos relacionados com banco de dados e as principais novidades do novo

Leia mais

Noções de. Microsoft SQL Server. Microsoft SQL Server

Noções de. Microsoft SQL Server. Microsoft SQL Server Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados

Leia mais

Manual de Utilização do Zimbra

Manual de Utilização do Zimbra Manual de Utilização do Zimbra Compatível com os principais navegadores web (Firefox, Chrome e Internet Explorer) o Zimbra Webmail é uma suíte completa de ferramentas para gerir e-mails, calendário, tarefas

Leia mais

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA FERRAMENTAS DE COLABORAÇÃO CORPORATIVA Manual de Utilização Google Grupos Sumário (Clique sobre a opção desejada para ir direto à página correspondente) Utilização do Google Grupos Introdução... 3 Página

Leia mais