click below
click below
Normal Size Small Size show me how
SA - Web Sys
SA1[M1-2] WEB SYSTEM TECHNOLOGIES / IT0049
| Question | Answer |
|---|---|
| Which line of code correctly defines a route that maps the URL /about to the about() method of the Pages controller? | $routes->get('/about', 'Pages::about'); |
| What is the purpose of a route placeholder such as (:num) in CodeIgniter routing? | It captures a numeric segment of the URL and passes it as a parameter |
| What architectural pattern separates an application into three interconnected components responsible for data, presentation, and control logic? | MVC (Model-View-Controller) |
| A developer argues that since a static PHP array "basically behaves like a small database," there is no real reason to ever migrate a working application to a real database. What is the strongest counterargument? | A static array's data disappears when the server restarts and cannot be reliably shared, searched, or updated by multiple users the way a database can |
| Matching type. Match the term with the correct description. | |
| Route | Maps an incoming URL to a specific controller and method |
| Controller | Decides what should happen when a specific URL is requested |
| Model | Manages data and communicates with the database |
| View | Displays information to the user, usually as HTML |
| What is the term for a segment of a route pattern (such as (:num)) that captures part of the URL and passes it to a controller method as a parameter? | Route placeholder (wildcard) |
| Passing data to a View requires converting the data into a special CodeIgniter-only data type before calling view(). | False |
| Installing CodeIgniter 4 with Composer is the only way to create a new CodeIgniter project. | False |
| A developer runs composer create-project codeigniter4/appstarter myproject in the terminal. What is the most likely purpose of this command? | To create a new CodeIgniter 4 project using Composer |
| Given the route $routes->get('/profile/(:num)', 'Pages::profile/$1');, which URL would correctly trigger this route? | /profile/25 |
| A CodeIgniter View file can only contain plain HTML and is not allowed to include any PHP code. | False |
| In the MVC pattern, which component is responsible for directly interacting with the database to retrieve or store data? | Model |
| Route definitions in CodeIgniter are typically written in the file app/Config/Routes.php. | True |
| In the MVC pattern, the Controller is responsible for deciding which View is displayed in response to a request. | True |
| A controller currently has public function about() { return view('about'); }. A developer wants the About page to also display the current year automatically. What is the correct way to do this? | Pass the year from the controller to the view using an array, e.g. return view('about', ['year' => date('Y')]); |
| A routes file contains $routes->get('/tasks', 'Tasks::index'); and, further down, another line $routes->get('/tasks', 'Tasks::list');. When a user visits /tasks, which method actually runs? | Tasks::index(), because CodeIgniter uses the first matching route it finds |
| What does MVC stand for in the context of web application architecture? | Model-View-Controller |
| What is the name of the function used inside a CodeIgniter controller to load a View file and optionally pass data to it? | view() |
| A student visits a page and gets a "404 Page Not Found" error, even though the controller method exists and runs without issue when tested directly. What is the most likely cause? | No route was defined for that URL and no default routing matched it |
| A view file is saved as app/Views/tasks/index.php, but a controller calls return view('Tasks/Index'); using different capitalization. This works on a Windows machine but fails once deployed to a Linux server. What does this reveal? | View lookups can be case-sensitive depending on the operating system, so the path passed to view() should match the actual file's case |
| A single controller can have multiple methods, each corresponding to a different route or page. | True |
| Which function is used inside a CodeIgniter controller method to load and return a View? | view() |
| In MVC, the Model is responsible for rendering HTML and displaying content to the user. | False |
| A controller method needs to send the value $name = 'Maria' to a view so it can be displayed. Which line correctly accomplishes this? | return view('profile', ['name' => $name]); |
| In a default CodeIgniter 4 installation, which folder should be set as the web server's document root for production hosting? | public |
| A developer writes all of an application's HTML directly inside controller methods using echo statements, without using any View files. Why is this generally considered poor practice under the MVC pattern? | It mixes presentation code with request-handling logic, making the application harder to maintain |
| A view file contains the line <h1><?= $title ?></h1>, but the page displays an "Undefined variable $title" error. What most likely caused this? | The controller did not pass title in the data array to view() |
| Why might a developer choose to use a web framework like CodeIgniter instead of writing an application in plain PHP? | Frameworks provide reusable structure and tools, reducing repetitive setup work |
| A team is deciding whether every URL should directly mirror internal controller and method names, or use custom, cleaner routes instead. What is the main benefit of defining custom routes? | Custom routes let you design URLs independently of internal class names, so public links do not break when internal code changes |
| What is the name of the PHP dependency manager commonly used to install CodeIgniter 4? | Composer |
| Which of the following best describes the role of a View in MVC? | It focuses only on presentation and displaying data |
| What is the purpose of the .htaccess file in the public folder of a CodeIgniter project? | It removes index.php from the URL through URL rewriting |
| Every folder inside a CodeIgniter 4 project is meant to be publicly accessible from the web server. | False |
| _______________________________________________________________________ | _______________________________________________________________________ |
| (M2)__________________________________________________________________ | _______________________________________________________________________ |
| Matching type. Match the term with the correct description. | |
| $table | Tells a Model which database table it represents |
| findAll() | Retrieves every record from a Model's table |
| $allowedFields | Restricts which fields may be mass-assigned during insert or update |
| where() | Filters query results based on a condition |
| _______________________________________________________________________ | _______________________________________________________________________ |
| Which line correctly retrieves all tasks with status 'done' using a TaskModel instance $model? | $model->where('status', 'done')->findAll(); |
| In the typical CodeIgniter data flow, which component calls the Model to retrieve data before passing it to a View? | The Controller |
| What term describes an unauthorized attempt to manipulate a database through injected SQL, which Query Builder helps prevent? | SQL injection |
| The .env file is used to store view templates. | False |
| What is the name of the CodeIgniter file where database connection settings are typically stored? | .env |
| Which method would you chain to where('status', 'pending') to sort results by creation date, newest first? | orderBy('created_at', 'DESC') |
| Which property in a Model tells CodeIgniter which database table the Model represents? | $table |
| CodeIgniter automatically creates database tables the first time a Model is used. | False |
| Every CodeIgniter application must have at least one Model, even if it does not use a database. | False |
| Chaining where() and orderBy() lets you filter and sort a query in a single statement. | True |
| A Model's $allowedFields property lists the columns permitted for mass assignment. | True |
| Which Query Builder method retrieves a single record by its primary key? | find($id) |
| Comparing SELECT * FROM tasks WHERE status = '$status' (built by directly inserting a variable into a SQL string) against $builder->where('status', $status)->get();, which is safer and why? | The Query Builder version, because it automatically escapes the value and reduces SQL injection risk |
| A table has columns id, title, status, created_at. Which line correctly inserts a new row with only a title? | $model->insert(['title' => 'Buy groceries']); |
| The public folder should contain the application's business logic, including Models. | False |
| A developer hardcodes a task list directly inside a controller using a PHP array, even though a database table for tasks already exists. What is the main drawback? | Any change to the task list requires editing code, and the two sources of data can fall out of sync |
| A team stores database passwords directly inside a Model's PHP file instead of .env. What is the main problem with this? | Credentials embedded in code are more likely to be exposed and harder to change per environment than values in .env |
| Why is CodeIgniter's Query Builder generally considered safer than concatenating raw SQL strings with user input? | Query Builder automatically escapes values, reducing the risk of SQL injection |
| What is the primary purpose of a CodeIgniter Model? | To manage data and communicate with the database |
| Using Query Builder instead of raw SQL strings reduces the risk of SQL injection. | True |
| findAll() returns only the first matching record from a table | False |
| Which Query Builder method retrieves every record from a Model's table? | findAll() |
| What does the $primaryKey property in a Model define? | The column CodeIgniter treats as the unique identifier for each row |
| After correctly configuring .env and creating a Model, a page still throws a database connection error. Which of these is LEAST likely to be the cause? | The view has no <title> tag |
| Which CodeIgniter file typically stores database connection settings such as hostname, username, and database name? | .env |
| What Query Builder method sorts retrieved records by a specific column, ascending or descending? | orderBy() |
| What term describes the special class that represents and manages a specific database table? | Model |
| A view shows "Undefined variable $tasks" even though the Model successfully retrieves records in the controller. What is the most likely cause? | The controller did not include tasks in the data array passed to view() |
| A new priority column is added directly in the database, but $allowedFields is never updated to include it. What happens when a controller tries to save a priority value through this Model? | It is silently dropped because $allowedFields still does not list it |
| findAll() returns only the first matching record from a table. | False |
| A model defines protected $allowedFields = ['title', 'status']; but a controller tries to insert a record that also includes a description value. What happens? | The description value is silently ignored because it is not in $allowedFields |
| A page correctly lists all tasks, but clicking into one specific task shows "Undefined variable $task." The controller has: $data['tasks'] = $model->find($id); return view('tasks/show', $data);. What is the bug? | The single record is stored under the plural key 'tasks' but the view expects $task (singular) |
| What does a Model's $allowedFields property control? | Which fields may be mass-assigned during insert() or update() |