---
title: "Behöver en funktion från modellen i modellen. Anropa från controller eller model?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/192655-behöver-en-funktion-från-modellen-i-modellen-anropa-från-controller-eller-model"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "xtreme"
published: "2015-04-11T09:05:44.000Z"
updated: "2015-04-12T10:08:58.000Z"
replies: 1
views: 871
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/192655-behöver-en-funktion-från-modellen-i-modellen-anropa-från-controller-eller-model"
---

# Behöver en funktion från modellen i modellen. Anropa från controller eller model?

## #1 — xtreme, 2015-04-11T09:05Z

En funktion i modellen måste få data från en annan funktion i modellen. Bör man gå tillbaka till kontrollern eller anropa den direkt från modellen?

Anropa generate från kontrollern

```php
class Inventory extends Controller {

	function add_stock()
	{
		$generate = $this->model->generate(); //call generate from controller
		$this->model->current_stock($generate);
	}
}

class Model {
    public function current_stock($generate)
    {
    	//do something
    }

    public function generate()
    {
    	//do something
    	return
    }
}
```

ELLER LÖSNING 2

Anropa generate från modellen

```php
class Inventory extends Controller {

	function add_stock()
	{
		$this->model->current_stock();
	}
}

class Model {
    public function current_stock()
    {
		$generate =	$this->generate(); //call generate from model
    	//do something
    }

    public function generate()
    {
    	//do something
    	return
    }
}
```

ELLER LÖSNING 3

Ett tredje alternativ är att anropa en funktion vars enda uppgift är att deligera till andra funktioner i modellen, dvs såhär. Hur ser det ut?

```php
class Inventory extends Controller
{
    function add_stock()
    {
        $this->model->add_stock();
    }
}
```

```php
class Model
{
    public function current_stock($generate)
    {
        //do something with information from generate
    }

    public function generate()
    {
        //do something
        return;
    }

    function add_stock()
    {
        $generate = $this->generate();
        $this->current_stock($generate);
    }
}
```

Alla lösningar fungerar men vilken är bästa lösningen?

OBS! Detta är bara kodexemel och kan innehålla något fel, bara för att illustrera hur jag menar.

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

## #2 — casca, 2015-04-12T10:08Z

Utan att veta precis vad current_stock() och generate() gör så skulle jag ändå luta åt alternativ 1. Anledningen är att det borde vara uppenbart av att läsa koden i Controller-klassen vad den gör, om man nu kan tänka sig en situation där man antingen anropar current_stock() eller generate().

Men om current_stock() alltid och endast använder sig av generate() så fungerar alternativ 2...

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

---

Tråden på webben: https://www.webforum.nu/amne/php/192655-behöver-en-funktion-från-modellen-i-modellen-anropa-från-controller-eller-model
