---
title: "Sökväg i include... Konstigt/jobbigt!!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/173314-sökväg-i-include-konstigt-jobbigt"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "learn"
published: "2008-08-12T17:03:50.000Z"
updated: "2008-08-15T20:38:56.000Z"
replies: 11
views: 643
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/173314-sökväg-i-include-konstigt-jobbigt"
---

# Sökväg i include... Konstigt/jobbigt!!

## #1 — learn, 2008-08-12T17:03Z

Ett mycket märkligt problem!

Jag har en sidstruktur innehållande mappar och filer. En index-fil som includar de andra delarna av sidan.

Så här ser mappstrukturen ut:

```

-[root]
---[css]
-----style.css
---[tester]
-----test.php
---[bilder]
-----logotyp.gif
-----foto.jpg
---[sidor]
-----ensida.php
-----[undersidor]
-------sida.php
---[public_html]
-----index.php
```

Det är index.php i mappen public_html som är "huvudsidan". Där inkluderas bl.a. filen sida.php som ligger i sidor/undersidor.

Det som nu är mkt konstigt och jobbigt är att de filer jag includar i sida.php "ärver"  index.phps förhållande till rooten. Alltså: om jag i t.ex. sida.php (som är includad i index.php) vill includa filen test.php så blir inte sökvägen ".../.../tester/test.php" utan "../tester/test.php".

Jag tycker detta är riktigt jobbigt. Dels för att min editor (Zend Studio) klagar på sökvägen, och dels för att det är svårt att hålla reda på alla sökvägar när de "inte stämmer".

Finns det något man kan göra??

Snälla hjälp mig!   :o   :o

Tack!

Permalänk: https://www.webforum.nu/p/173314

## #2 — SPiN, 2008-08-12T17:17Z

Ja, det finns något man kan göra.

Ändra din include_path i php.ini till en mapp där du har dina inkluderingsfiler. Att sprida ut allt som du gör ser jag ingen som helst anledning till egentligen? Skapa en inkluderingsmapp som du lägger till din include_path, och sen skapar du (om du måste/vill separera mer på filerna) mappar i den mappen istället.

<http://se.php.net/manual/en/ini.core.php#ini.include-path>

Permalänk: https://www.webforum.nu/p/2132934

## #3 — learn, 2008-08-12T20:22Z

Aha, ok... Jag trodde det var att rekommendera. Att separera och sortera upp koden, lägga filer med funktioner i en mapp och klasser i en annan etc för att få en "renare" struktur.

Hur brukar ni andra göra? Tips på projektupplägg?

Spin, det du skriver kräver väl att jag har tillgång till webbhotellets php.ini-fil...?

Permalänk: https://www.webforum.nu/p/2132994

## #4 — colione, 2008-08-12T20:35Z

<http://www.php.net/manual/en/function.set-include-path.php>

Permalänk: https://www.webforum.nu/p/2132997

## #5 — learn, 2008-08-13T06:38Z

Jo jo, men...

> **learn skrev:**
>
> Jag trodde det var att rekommendera. Att separera och sortera upp koden, lägga filer med funktioner i en mapp och klasser i en annan etc för att få en "renare" struktur.
> 
> Hur brukar ni andra göra? Tips på projektupplägg?

Tipsa gärna också om några bra länkar i ämnet, jag vet inte riktigt vad jag ska söka efter.

Permalänk: https://www.webforum.nu/p/2133031

## #6 — Fredde Mannen, 2008-08-13T06:50Z

> **learn skrev:**
>
> Aha, ok... Jag trodde det var att rekommendera. Att separera och sortera upp koden, lägga filer med funktioner i en mapp och klasser i en annan etc för att få en "renare" struktur.
> 
> Hur brukar ni andra göra? Tips på projektupplägg?
> 
> Spin, det du skriver kräver väl att jag har tillgång till webbhotellets php.ini-fil...?

Själv  brukar jag dela upp i ungefär följande mappstruktur

/inc
/inc/classes/
   /inc/interfaces/ICustomer.php
   /inc/classes/bll (business logic layer) ex. Customer.php
   /inc/classes/dll (data logic layer) ex. CustomerData.php

/images
   /icons

/css

/\*.php (gränssnitt)

Permalänk: https://www.webforum.nu/p/2133033

## #7 — learn, 2008-08-13T13:09Z

> **Fredde Mannen skrev:**
>
> Själv  brukar jag dela upp i ungefär följande mappstruktur
> 
> /inc
> /inc/classes/
>    /inc/interfaces/ICustomer.php
>    /inc/classes/bll (business logic layer) ex. Customer.php
>    /inc/classes/dll (data logic layer) ex. CustomerData.php
> 
> /images
>    /icons
> 
> /css
> 
> /\*.php (gränssnitt)

OK, men då borde du ju få samma problem som jag om du ska includa en fil i t.ex. Customer.php som i sin tur är includad högre upp i hierarkin. Eller hur?? Föresten, varför lägger du bll och dll i mappen för klasser? Vart lägger du funktioner (php och js)?

Är det fler som skulle kunna dela med sig av sina strukturer? Intressant att se!   :bire

Permalänk: https://www.webforum.nu/p/2133101

## #8 — Fredde Mannen, 2008-08-13T14:00Z

För att Customer.php är ex.

```
 
/* innehåller metoder (funktioner) för användning i UI, beräkningar av olika slag..*/
class Customer {...}
```

och i dll är ex CustomerData.php

```
 /* hanterar insättning/hämtning av data från någon form av datakälla (dock bara det som gäller entiteten Customer.) */
class CustomerData {...}
```

I / lägger jag samtliga UI-filer. Dessa består av anrop till klasserna i mappen /inc/bll, bll gör anrop till klasserna i dll. UI kommunicerar med bll, som i sin tur kommunicerar med dll och vice versa. Jag har dessutom en mapp som jag kallar för /js  där alla javascript filer hamnar i givetvis. 

UI-filerna (ex. index.php) inkluderar nödvändiga JS-filer, CSS-filer, bild-filer, samt inkluderar en fil som ligger i /inc som jag brukar kalla för något passande ex. bll_include.php

Då får filen /index.php alla funktionalitet som de olika klasserna i /inc/bll har (så länge metoderna är public dvs). 

Så sätter jag include_path till inc 
Ex. 

```
 
include "bll_include.php";

if($_POST['new']) {
  $customerId = 0;
  $customer = new Customer();
  $customer->setCustomername($_POST['customername']);
  $customer->setCustomeraddress($_POST['customeraddress']);

  // save and return customerid.
  $customerId = $customer->save();
}
```

eller ex /customers/show_all_customers.php 

```
  include "bll_include.php";
  $customer = new Customer();
  $listCustomers = $customer->getAll();

  // do something with $listCustomers;
```

Men hänsyn till eventuella fel. :)

Permalänk: https://www.webforum.nu/p/2133111

## #9 — learn, 2008-08-13T14:05Z

Tack för din beskrivning. Finns det några bra sidor i detta ämne? Ge mig gärna någon länk.

Permalänk: https://www.webforum.nu/p/2133114

## #10 — learn, 2008-08-13T15:06Z

Jag använder denna istället: [chdir](http://se2.php.net/manual/en/function.chdir.php) 

Tycks funka riktigt bra!

Några invändningar? :)

Permalänk: https://www.webforum.nu/p/2133125

## #11 — learn, 2008-08-13T18:14Z

Ingen? Ska jag köra på det eller finns några nackdelar?

Permalänk: https://www.webforum.nu/p/2133159

## #12 — learn, 2008-08-15T20:38Z

Ok, bra!

Permalänk: https://www.webforum.nu/p/2133525

---

Tråden på webben: https://www.webforum.nu/amne/php/173314-sökväg-i-include-konstigt-jobbigt
