SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
Criação de um Projeto Básico
com Zend Framework 2




            ● Edgar
            ● Priscila
Sobre o ZF (Zend Framework)
● Um projeto Open Source de iniciativa da Zend,
   mesma organização que mantém o PHP.

● Framework para Aplicações Web no Ambiente
   Apache/PHP.

● Objetivo de facilitar o desenvolvimento e implementar
   as melhores práticas

● Conta com mais de 300 contribuidores, incluindo
   grandes corporações como IBM, Google e Microsoft.
Sobre o ZF (Zend Framework)
● Arquitetura modular, permite usar somente alguns
  módulos, se adaptando a qualquer ambiente.

● Componentes para integração com web services. A
  biblioteca padrão para acesso aos serviços do google
  via PHP, faz parte do ZF.

● Componentes para implementar MVC, TableGateway,
  autenticação e autorização via ACLs

● Suporte ao desenvolvimento orientado a testes.

● Vasta documentação, inclusive um livro produzido pela
  Zend com mais de 1300 páginas
Arquitetura - SOLID
● SOLID - Princípios da programação orientada a objetos
   e padrões.

   ○ SRP (Single responsibility principle), o objeto deve
     ter somente uma responsabilidade simples.

   ○ OCP (Open/closed principle), deve ser aberto para
     extensão e fechado para modificações.

   ○ LSP (Liskov substitution principle), objetos devem
     ser substituíveis por ocorrencias de seus subtipos
     sem prejudicar o programa.
Arquitetura - SOLID

  ○ ISP (Interface segregation principle), várias
    interfaces específicas e melhor que poucas de
    propósito geral.

  ○ DIP (Dependency inversion principle), injeção de
    dependência é um método de implementar este
    princípio.
Preparando o Ambiente
● Para a instalação, existem diverços pacotes que já
   vem com o PHP, Apache e MySQL integrados, segue
   os mais populares para Windows.
   ○ WampServer (http://www.wampserver.com/en/)
   ○ EasyPHP (http://www.easyphp.org)
   ○ XAMP (http://www.apachefriends.org)

● O ZF é uma biblioteca que será incorporada à sua
   aplicação, não sendo necessária a instalação, segue
   link para baixar;
       http://framework.zend.com/downloads/latest
Preparando o Ambiente
● O ZF faz uso de reescrita de URL, então, uma pequena
  alteração deve ser feita no Apache.

   ○ Ativação do módulo de reescrita de URL (Extensão
     mod_rewrite)

   ○ O apache deve ser configurado para considerar o
     uso do arquivo .htaccess, isto pode ser feito
     alterando a directiva AllowOverride no arquivo de
     configuração httpd.conf;
            AllowOverride All
Preparando o Ambiente
● É uma boa prática trabalhar com hosts virtuais em um
  ambiente de desenvolvimento, isto permite ter vários
  projetos na mesma máquina.

   ○ Por padrão, o apache vem sem opção para hosts
     virtuais, isto pode ser descomentando ou
     adcionando a seguinte linha no httpd.conf;
         Include conf/extra/httpd-vhosts.conf


   ○ No arquivo de vhosts tem algumas definições de
     exemplo, estas devem ser apagadas ou
     comentadas
Preparando o Ambiente
  ○ Por padrão o Apache vem configurado para não
    permitir projetos fora da pasta www, existente
    diretório de instalação.

  ○ Esta definição dever ser alterada, isto é feito
    editando o arquivo httpd.conf;

            <Directory />
              Options FollowSymLinks
              AllowOverride None
              Order deny,allow
              Deny from all
            </Directory>
Primeiro Projeto
A seguir, a sequência de passos para criar um projeto
básico;
1. Criar um host virtual para o projeto (zteste)
   a. Definir o nome zteste no arquivo de hosts do windows (C:
       WindowsSystem32driversetchosts), a seguinte linha deve
       ser acrescentada;
               127.0.0.1 zteste
   b. Criar um host virtual, para fazer isto vamos editar o seguinte
       arquivo;
           ...apacheconfextrahttpd-vhosts.conf
Primeiro Projeto
Na configuração abaixo foi definido que o projeto ficará na
pasta D:tads2012.2tecwebprojetoszteste, a subpasta
public é onde vamos colocar os arquivos públicos.
<VirtualHost *:8080>
  DocumentRoot "D:tads2012.2tecwebprojetosztestepublic"
  ServerName zteste
  SetEnv APPLICATION_ENV "development"
   <Directory "D:tads2012.2tecwebprojetosztestepublic">
          DirectoryIndex index.php
          AllowOverride all
          Order Allow,Deny
          Allow from all
     </Directory>
</VirtualHost>
Primeiro Projeto
● Uma estrutura inicial para o projeto deve ser baixada;
      https://github.com/zendframework/ZendSkeletonApplication

● A documentação do ZF sugere a utilização do "http:
  //getcomposer.org/" para gerenciar dependências e
  fazer a configuração inicial do projeto.

● Para um melhor entendimento sobre a estrutura, vamos
  configurar sem o composer, desta forma, a estrutura
  inicial baixada deve ser copiada para a pasta do
  projeto.

● A biblioteca do zend deve ser então copiada para a
  pasta ..vendorZF2
Primeiro Projeto - Estrutura
Primeiro Projeto - Teste
Aponte o navegador para a url http://zteste:8080/, verá a
página inicial. O projeto esta pronto para ser trabalhado.
Referências
● http://www.zend.com/en/community/framework.
● http://pt.wikipedia.org/wiki/Zend_Framework.
● http://framework.zend.
  com/wiki/display/ZFDEV/PHP+Coding+Standard+%
  28draft%29
● https://media.readthedocs.org/pdf/zf2/latest/zf2.pdf
● http://en.wikipedia.org/wiki/SOLID_(object-
  oriented_design)
● http://codebetter.com/davidhayden/2005/06/11/the-
  liskov-substitution-principle-agile-software-development-
  principles-patterns-and-practices/
● http://c2.com/cgi/wiki?LiskovSubstitutionPrinciple

Weitere ähnliche Inhalte

Was ist angesagt?

Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Webantonio sérgio nogueira
 
Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxThiago Paes
 
WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015Adriano Schmidt
 
Criando websites a jato com Django
Criando websites a jato com DjangoCriando websites a jato com Django
Criando websites a jato com DjangoMarcos Petry
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Eduardo Mendes
 
Iniciando com o_zend_framework
Iniciando com o_zend_frameworkIniciando com o_zend_framework
Iniciando com o_zend_frameworkMilton Rodrigues
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3Flávio Lisboa
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterEric Silva
 
JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.Eduardo Medeiros
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + FirebaseBruno Catão
 
The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openrukoÉverton Ribeiro
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend frameworkMarcos Oliveira
 
Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6danielfcampos
 
Java Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuraçãoJava Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuraçãoEduardo Mendes
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JSRodrigo Urubatan
 

Was ist angesagt? (20)

Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
 
Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com Nginx
 
WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015
 
Criando websites a jato com Django
Criando websites a jato com DjangoCriando websites a jato com Django
Criando websites a jato com Django
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 
Iniciando com o_zend_framework
Iniciando com o_zend_frameworkIniciando com o_zend_framework
Iniciando com o_zend_framework
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3
 
Node JS - Parte 1
Node JS - Parte 1Node JS - Parte 1
Node JS - Parte 1
 
Procergs php-seguro
Procergs php-seguroProcergs php-seguro
Procergs php-seguro
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
 
JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + Firebase
 
The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openruko
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend framework
 
Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6
 
Java Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuraçãoJava Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuração
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
PHPMongoDB
PHPMongoDBPHPMongoDB
PHPMongoDB
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 

Ähnlich wie Criando Projeto Básico ZF2

Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizadosThiago Rodrigues
 
Apostila Zend Framework
Apostila Zend FrameworkApostila Zend Framework
Apostila Zend FrameworkFernando Palma
 
Zend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteMichael Cardoso
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigitalJust Digital
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxThiago Paes
 
Desenvolvimento web no Linux
Desenvolvimento web no LinuxDesenvolvimento web no Linux
Desenvolvimento web no LinuxEduardo Rozario
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebIsrael Messias
 
Slides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas DistribuídosSlides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas Distribuídosvinycesar
 
Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory gigadrop
 
Começando com Zend Framework 2
Começando com Zend Framework 2Começando com Zend Framework 2
Começando com Zend Framework 2Cezar Souza
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheDell Technologies
 
Trabalhando em ambientes php com docker
Trabalhando em ambientes php com dockerTrabalhando em ambientes php com docker
Trabalhando em ambientes php com dockerAlef Castelo
 
Project HA
Project HAProject HA
Project HAKarpv
 
Escalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginxEscalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginxSaveincloud
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxThiago Paes
 

Ähnlich wie Criando Projeto Básico ZF2 (20)

Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Apostila Zend Framework
Apostila Zend FrameworkApostila Zend Framework
Apostila Zend Framework
 
Apache
ApacheApache
Apache
 
Zend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil Competente
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
Desenvolvimento web no Linux
Desenvolvimento web no LinuxDesenvolvimento web no Linux
Desenvolvimento web no Linux
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente Web
 
Python CGI
Python CGIPython CGI
Python CGI
 
Slides nginx
Slides nginxSlides nginx
Slides nginx
 
Slides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas DistribuídosSlides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas Distribuídos
 
Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory
 
Começando com Zend Framework 2
Começando com Zend Framework 2Começando com Zend Framework 2
Começando com Zend Framework 2
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+Apache
 
Trabalhando em ambientes php com docker
Trabalhando em ambientes php com dockerTrabalhando em ambientes php com docker
Trabalhando em ambientes php com docker
 
Project HA
Project HAProject HA
Project HA
 
Escalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginxEscalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginx
 
I educar-manual-de-instalaao
I educar-manual-de-instalaaoI educar-manual-de-instalaao
I educar-manual-de-instalaao
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - Nginx
 

Criando Projeto Básico ZF2

  • 1. Criação de um Projeto Básico com Zend Framework 2 ● Edgar ● Priscila
  • 2. Sobre o ZF (Zend Framework) ● Um projeto Open Source de iniciativa da Zend, mesma organização que mantém o PHP. ● Framework para Aplicações Web no Ambiente Apache/PHP. ● Objetivo de facilitar o desenvolvimento e implementar as melhores práticas ● Conta com mais de 300 contribuidores, incluindo grandes corporações como IBM, Google e Microsoft.
  • 3. Sobre o ZF (Zend Framework) ● Arquitetura modular, permite usar somente alguns módulos, se adaptando a qualquer ambiente. ● Componentes para integração com web services. A biblioteca padrão para acesso aos serviços do google via PHP, faz parte do ZF. ● Componentes para implementar MVC, TableGateway, autenticação e autorização via ACLs ● Suporte ao desenvolvimento orientado a testes. ● Vasta documentação, inclusive um livro produzido pela Zend com mais de 1300 páginas
  • 4. Arquitetura - SOLID ● SOLID - Princípios da programação orientada a objetos e padrões. ○ SRP (Single responsibility principle), o objeto deve ter somente uma responsabilidade simples. ○ OCP (Open/closed principle), deve ser aberto para extensão e fechado para modificações. ○ LSP (Liskov substitution principle), objetos devem ser substituíveis por ocorrencias de seus subtipos sem prejudicar o programa.
  • 5. Arquitetura - SOLID ○ ISP (Interface segregation principle), várias interfaces específicas e melhor que poucas de propósito geral. ○ DIP (Dependency inversion principle), injeção de dependência é um método de implementar este princípio.
  • 6. Preparando o Ambiente ● Para a instalação, existem diverços pacotes que já vem com o PHP, Apache e MySQL integrados, segue os mais populares para Windows. ○ WampServer (http://www.wampserver.com/en/) ○ EasyPHP (http://www.easyphp.org) ○ XAMP (http://www.apachefriends.org) ● O ZF é uma biblioteca que será incorporada à sua aplicação, não sendo necessária a instalação, segue link para baixar; http://framework.zend.com/downloads/latest
  • 7. Preparando o Ambiente ● O ZF faz uso de reescrita de URL, então, uma pequena alteração deve ser feita no Apache. ○ Ativação do módulo de reescrita de URL (Extensão mod_rewrite) ○ O apache deve ser configurado para considerar o uso do arquivo .htaccess, isto pode ser feito alterando a directiva AllowOverride no arquivo de configuração httpd.conf; AllowOverride All
  • 8. Preparando o Ambiente ● É uma boa prática trabalhar com hosts virtuais em um ambiente de desenvolvimento, isto permite ter vários projetos na mesma máquina. ○ Por padrão, o apache vem sem opção para hosts virtuais, isto pode ser descomentando ou adcionando a seguinte linha no httpd.conf; Include conf/extra/httpd-vhosts.conf ○ No arquivo de vhosts tem algumas definições de exemplo, estas devem ser apagadas ou comentadas
  • 9. Preparando o Ambiente ○ Por padrão o Apache vem configurado para não permitir projetos fora da pasta www, existente diretório de instalação. ○ Esta definição dever ser alterada, isto é feito editando o arquivo httpd.conf; <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory>
  • 10. Primeiro Projeto A seguir, a sequência de passos para criar um projeto básico; 1. Criar um host virtual para o projeto (zteste) a. Definir o nome zteste no arquivo de hosts do windows (C: WindowsSystem32driversetchosts), a seguinte linha deve ser acrescentada; 127.0.0.1 zteste b. Criar um host virtual, para fazer isto vamos editar o seguinte arquivo; ...apacheconfextrahttpd-vhosts.conf
  • 11. Primeiro Projeto Na configuração abaixo foi definido que o projeto ficará na pasta D:tads2012.2tecwebprojetoszteste, a subpasta public é onde vamos colocar os arquivos públicos. <VirtualHost *:8080> DocumentRoot "D:tads2012.2tecwebprojetosztestepublic" ServerName zteste SetEnv APPLICATION_ENV "development" <Directory "D:tads2012.2tecwebprojetosztestepublic"> DirectoryIndex index.php AllowOverride all Order Allow,Deny Allow from all </Directory> </VirtualHost>
  • 12. Primeiro Projeto ● Uma estrutura inicial para o projeto deve ser baixada; https://github.com/zendframework/ZendSkeletonApplication ● A documentação do ZF sugere a utilização do "http: //getcomposer.org/" para gerenciar dependências e fazer a configuração inicial do projeto. ● Para um melhor entendimento sobre a estrutura, vamos configurar sem o composer, desta forma, a estrutura inicial baixada deve ser copiada para a pasta do projeto. ● A biblioteca do zend deve ser então copiada para a pasta ..vendorZF2
  • 13. Primeiro Projeto - Estrutura
  • 14. Primeiro Projeto - Teste Aponte o navegador para a url http://zteste:8080/, verá a página inicial. O projeto esta pronto para ser trabalhado.
  • 15. Referências ● http://www.zend.com/en/community/framework. ● http://pt.wikipedia.org/wiki/Zend_Framework. ● http://framework.zend. com/wiki/display/ZFDEV/PHP+Coding+Standard+% 28draft%29 ● https://media.readthedocs.org/pdf/zf2/latest/zf2.pdf ● http://en.wikipedia.org/wiki/SOLID_(object- oriented_design) ● http://codebetter.com/davidhayden/2005/06/11/the- liskov-substitution-principle-agile-software-development- principles-patterns-and-practices/ ● http://c2.com/cgi/wiki?LiskovSubstitutionPrinciple