MVC Advanced & Reflection Reflection, Parsing Dynamic Data, Asynchronous Requests SoftUni Team Technical Trainers Software University

Slides:



Advertisements
Similar presentations
Software Quality Assurance QA Engineering, Testing, Bug Tracking, Test Automation Software University Technical Trainers SoftUni Team.
Advertisements

C# Advanced Topics Methods, Classes and Objects SoftUni Team Technical Trainers Software University
AngularJS Routing Routes, Route Parameters, Templates, Location, Navigation SoftUni Team Technical Trainers Software University
AngularJS Services Built-in and Custom Services SoftUni Team Technical Trainers Software University
Software University Curriculum, Courses, Exams, Jobs SoftUni Team Technical Trainers Software University
PHP Basics Course Introduction SoftUni Team Technical Trainers Software University
Fundamentals SoftUni Welcome to Software University SoftUni Team Technical Trainers Software University
Project Tracking Tools Trello, Asana, Basecamp, GitHub Issue Tracker, TRAC SoftUni Team Technical Trainers Software University
Software Testing Lifecycle Exit Criteria Evaluation, Continuous Integration Ivan Yonkov Technical Trainer Software University.
High-Quality Programming Code Code Correctness, Readability, Maintainability, Testability, Etc. SoftUni Team Technical Trainers Software University
Consuming REST Services from C# SoftUni Team Technical Trainers Software University
Loops Repeating Code Multiple Times SoftUni Team Technical Trainers Software University
Database APIs and Wrappers
Entity Framework Performance SoftUni Team Technical Trainers Software University
Svetlin Nakov Technical Trainer Software University
Build Processes and Continuous Integration Automating Build Processes Software University Technical Trainers SoftUni Team.
Processing Redis with.NET How to Operate with Redis Databases SoftUni Team Technical Trainers Software University
Multidimensional Arrays, Sets, Dictionaries Processing Matrices, Multidimensional Arrays, Dictionaries, Sets SoftUni Team Technical Trainers Software University.
Project Tracking Tools Trello, Asana, Basecamp, GitHub Issue Tracker, TRAC Angel Georgiev Part-time Trainer Software University
MVC Concepts Basics Model-View-Controller (MVC) Concepts for Web Developers SoftUni Team Technical Trainers Software University
Test-Driven Development Learn the "Test First" Approach to Coding SoftUni Team Technical Trainers Software University
Static Members and Namespaces Static Members, Indexers, Operators, Namespaces SoftUni Team Technical Trainers Software University
Trainers Team Ivan Yonkov Rated in the top 7% at Stack Overflow
Templating, Routing, lodash Extending functionality using Collections SoftUni Team Technical Trainers Software University
ASP.NET MVC Architecture Layouts, Filters, Sections, Helpers, Partial Views, Areas… SoftUni Team Technical Trainers Software University
Controllers and Markup Controllers, $scope, Markup, Directives, Expressions, Binding, Filters, Validation SoftUni Team Technical Trainers Software University.
AMD and RequireJS Splitting JavaScript Code into Dependent Modules Software University Technical Trainers SoftUni Team.
Using SQL Connecting, Retrieving Data, Executing SQL Commands, … Svetlin Nakov Technical Trainer Software University
Asynchronous Web Services Writing Asynchronous Web Services SoftUni Team Technical Trainers Software University
Sessions and Cookies State Management, Cookies, Sessions, Hidden Fields SoftUni Team Technical Trainers Software University
Controls, Widgets, Grid…
Jekyll Static Site Generator Template-Based Site Generation Svetlin Nakov Technical Trainer Software University
AJAX in ASP.NET MVC AJAX, Partial Page Rendering, jQuery AJAX, MVC AJAX Helpers SoftUni Team Technical Trainers Software University
Forms Overview, Query string, Submitting arrays, PHP & HTML, Input types, Redirecting the user Mario Peshev Technical Trainer Software.
ASP.NET SignalR SoftUni Team Technical Trainers Software University
Responsive Design Design that Adapts to Different Devices SoftUni Team Technical Trainers Software University
Processing JSON in.NET JSON, JSON.NET LINQ-to-JSON and JSON to XML SoftUni Team Technical Trainers Software University
High-Quality Programming Code Code Correctness, Readability, Maintainability Svetlin Nakov Technical Trainer Software University
CSS Transitions and Animations Animated HTML Elements SoftUni Team Technical Trainers Software University
Prototype Chain and Inheritance Prototype chain, Inheritance, Accessing Base Members Software University Technical Trainers SoftUni Team.
Reflection Programming under the hood SoftUni Team Technical Trainers Software University
Mocking with Moq Tools for Easier Unit Testing SoftUni Team Technical Trainers Software University
Mocking Unit Testing Methods with External Dependencies SoftUni Team Technical Trainers Software University
Mocking with Moq Mocking tools for easier unit testing Svetlin Nakov Technical Trainer Software University
ORM Basics Repository Pattern, Models, Entity Manager Ivan Yonkov Technical Trainer Software University
Sets, Dictionaries SoftUni Team Technical Trainers Software University
Creating Content Defining Topic, Creating Technical Training Materials SoftUni Team Technical Trainers Software University
PHP Basics Course Introduction Svetlin Nakov Technical Trainer Software University
Software Technologies Course Overview SoftUni Team Technical Trainers Software University
Programming Fundamentals Course Introduction SoftUni Team Technical Trainers Software University
Doctrine The PHP ORM SoftUni Team Technical Trainers Software University
Creating Content Defining Topic, Creating Technical Training Materials SoftUni Team Technical Trainers Software University
ASP.NET MVC Course Program, Trainers, Evaluation, Exams, Resources SoftUni Team Technical Trainers Software University
First Steps in PHP Creating Very Simple PHP Scripts SoftUni Team Technical Trainers Software University
Inheritance Class Hierarchies SoftUni Team Technical Trainers Software University
Static Members Static Variables & Methods SoftUni Team Technical Trainers Software University
Stacks and Queues Processing Sequences of Elements SoftUni Team Technical Trainers Software University
Web API - Introduction AJAX, Spring Data REST SoftUni Team Web API
Introduction to MVC SoftUni Team Introduction to MVC
ASP.NET Integration Testing
ASP.NET Unit Testing Unit Testing Web API SoftUni Team ASP.NET
Classes, Properties, Constructors, Objects, Namespaces
Mocking tools for easier unit testing
State Management Cookies, Sessions SoftUni Team State Management
PHP MVC Frameworks MVC Fundamentals SoftUni Team Technical Trainers
MVC Architecture. Routing
MVC Architecture, Symfony Framework for PHP Web Apps
ASP.NET MVC Introduction
Extending functionality using Collections
JavaScript: ExpressJS Overview
Presentation transcript:

MVC Advanced & Reflection Reflection, Parsing Dynamic Data, Asynchronous Requests SoftUni Team Technical Trainers Software University

Table of Contents 1.Reflection 2.ViewHelpers 3.AJAX Calls 4.Grids 5.Authorization API 2

Reflection Description, Reflection in PHP, Examples

4  Program's ability to inspect itself and modify its logic at execution time.  Asking an object to tell you about its properties and methods, and altering those members (even private ones).  Most programming languages can use reflection.  Statically typed languages, such as Java, have little to no problems with reflection. Reflection

5  Dynamically-typed language (like PHP or Ruby) is heavily based on reflection.  When you send one object to another, the receiving object has no way of knowing the structure and type of that object.  It uses reflection to identify the methods that can and cannot be called on the received object. Reflection in PHP

6  Dynamic typing is probably impossible without reflection.  Aspect Oriented Programming listens from method calls and places code around methods, all accomplished with reflection.  PHPUnit relies heavily on reflection, as do other mocking frameworks.  Web frameworks in general use reflection for different purposes. Laravel makes heavy use of reflection to inject dependencies.  Metaprogramming is hidden reflection.  Code analysis frameworks use reflection to understand your code. When Should We Use Reflection?

7  get_class() - Returns the name of the class of an object Examples <?php class user { function name() { function name() { echo "My name is ", get_class($this); echo "My name is ", get_class($this); }} $pesho = new foo(); echo "It’s name is ", get_class($pesho); $pesho->name(); // external call output: “Its name is user” // internal call output: “My name is user”

8  get_class_methods() - Gets the class methods' names Examples (2) <?php class MyClass { function myClass() { } function myFunc1() { } function myFunc2() { } } $class_methods = get_class_methods( 'myclass‘ ); or $class_methods = get_class_methods( new myclass() ); var_dump( $class_methods ); Result array(3) { [0]=> string(7) "myclass [1]=> string(7)"myfunc1“ [2]=> string(7) "myfunc2“ }

9  method_exists() - Checks if the class method exists Examples (3) <?php class MyClass { function myFunc() { return true; } } var_dump( method_exists( new myclass, 'myFunc‘ ) ); var_dump( method_exists( new myclass, ‘noSuchFunc‘ ) ); bool(true) bool(false)

10  Reflector is an interface implemented by all exportable Reflection classes.  The ReflectionClass class reports information about a class. Reflector and ReflectionClass <?php class MyClass { public $prop1 = 1; protected $prop2 = 2; private $prop3 = 3; } $newClass = new Foo(); $reflect = new ReflectionClass( $ newClass ); $properties = $reflect-> getProperties( ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED ); foreach ( $properties as $property ) { echo $property -> getName() } var_dump( $props ); Returns properties names $prop1 $prop2 $prop3 array(2) { [0]=> object(ReflectionProperty)#3 (2) { ["name"]=> string(5) "prop1" ["class"]=> string(7) "MyClass" } …}

ViewHelpers ViewHelpers in ASP.NET, MVC / Laravel

12  Separate the application logic from data visualization  Common use cases for view helpers include:  Accessing models  Performing complex or repeatable display logic  Manipulating and formatting model data  Persisting data between view scripts ViewHelpers

13 Examples class View { private $controllerName; private $controllerName; private $actionName; private $actionName; public function __construct($controllName, $actionName) public function __construct($controllName, $actionName) { $this->controllerName = $controllName; $this->controllerName = $controllName; if (!$actionName) { if (!$actionName) { $actionName = 'index'; $actionName = 'index'; } $this->actionName = $actionName; $this->actionName = $actionName; } public function render() public function render() { require_once '/Views/'. $this->controllerName require_once '/Views/'. $this->controllerName. '/'. $this->actionName. '.php';. '/'. $this->actionName. '.php'; }

14 Examples (1) public function url($controller = null, $action = null, $params = []) { $requestUri = explode('/', $_SERVER['REQUEST_URI']); $requestUri = explode('/', $_SERVER['REQUEST_URI']); $url = "//". $_SERVER['HTTP_HOST']. "/"; $url = "//". $_SERVER['HTTP_HOST']. "/"; foreach ($requestUri as $k => $uri) { foreach ($requestUri as $k => $uri) { if ($uri == $this->controllerName) break; if ($uri == $this->controllerName) break; $url.= "$uri"; $url.= "$uri"; } if ($controller) if ($controller) $url.= "/$controller"; $url.= "/$controller"; if ($action) if ($action) $url.= "/$action"; $url.= "/$action"; foreach ($params as $key => $param) foreach ($params as $key => $param) $url.= "/$key/$param"; $url.= "/$key/$param"; return $url; return $url;}

15 Examples (2) public function partial($name) { include 'Views/Partials/'. $name. ".php"; }  URL ViewHelper example URL ViewHelper example

16 Examples (Ajax.BeginForm("PerformAction", new AjaxOptions { OnSuccess = "OnSuccess", OnFailure = "OnFailure" })) => => m. Address) }  Ajax Form in ASP.NET

AJAX Calls Asynchronous JavaScript and XML

18  AJAX is a technique for creating fast and dynamic web pages.  AJAX allows web pages to be updated asynchronously – update parts of a web page, without reloading the whole page. What is AJAX  How AJAX works

19 Example (1) public function delete() { if ($this->request->id) { if ($this->request->id) { $topic_id = $this->request->id; $topic_id = $this->request->id; $topic = $this->app->TopicModel->find($topic_id); $topic = $this->app->TopicModel->find($topic_id); $isOwnTopic = $topic->getUserId() == $this->session->userId; $isOwnTopic = $topic->getUserId() == $this->session->userId; if ($isOwnTopic || $this->isAdmin) { if ($isOwnTopic || $this->isAdmin) { if ($this->app->TopicModel->delete($topic_id)) { if ($this->app->TopicModel->delete($topic_id)) { return new Json(['success' => 1]) return new Json(['success' => 1]) } } } return new Json(['success' => 0]); }

20 Example (2) $("#deleteTopic").click(function() { var topic = $(this); $.post(" url('topics', 'delete');?>", $.post(" url('topics', 'delete');?>",{ id: $this->topic['id'] id: $this->topic['id'] }).done(function (response){ var json = $.parseJSON(response); var json = $.parseJSON(response); if (json.success == 1) { if (json.success == 1) { topic.hide(); topic.hide(); } }); }); }) })

GRID Former name for AIDS

22  GRIDs are tools for representing data as a table  Usually very extensive and customizable  Have a lot of filtering options  Column contents filtering  Column show/hide  Column sorting  Row children What is GRID

Html.Kendo().Grid<Kendo.Mvc.Examples.Models.CustomerViewModel>().Name("grid").Name("grid").Columns(columns =>.Columns(columns => { columns.Bound(c => c.ContactName).Width(240); columns.Bound(c => c.ContactName).Width(240); columns.Bound(c => c.ContactTitle).Width(190); columns.Bound(c => c.ContactTitle).Width(190); columns.Bound(c => c.CompanyName); columns.Bound(c => c.CompanyName); }) }).HtmlAttributes(new { style = "height: 380px;" }).HtmlAttributes(new { style = "height: 380px;" }).Scrollable().Scrollable().Groupable().Groupable().Sortable().Sortable().Pageable(pageable => pageable.Pageable(pageable => pageable.Refresh(true).Refresh(true).PageSizes(true).PageSizes(true).ButtonCount(5)).ButtonCount(5)).DataSource(dataSource => dataSource.DataSource(dataSource => dataSource.Ajax().Ajax().Read(read => read.Action("Customers_Read", "Grid")) ).Read(read => read.Action("Customers_Read", "Grid")) ) 23 Kendo UI GRID

jQuery("#list2").jqGrid({ url:'server.php?q=2', url:'server.php?q=2', datatype: "json", colNames:['Inv No','Date', 'Client', 'Amount'], colNames:['Inv No','Date', 'Client', 'Amount'], colModel:[ colModel:[ {name:'id',index:'id', width:55}, {name:'id',index:'id', width:55}, {name:'invdate',index:'invdate', width:90}, {name:'invdate',index:'invdate', width:90}, {name:'name',index:'name asc, invdate', width:100}, {name:'name',index:'name asc, invdate', width:100}, {name:'amount',index:'amount', width:80, align:"right"} {name:'amount',index:'amount', width:80, align:"right"} ], ], rowNum:10, rowNum:10, rowList:[10,20,30], rowList:[10,20,30], pager: '#pager2', pager: '#pager2', sortname: 'id', sortname: 'id', viewrecords: true, viewrecords: true, sortorder: "desc", sortorder: "desc", caption:"JSON Example" caption:"JSON Example"}); 24 jqGrid

Authorization API

26  Authentication is knowing the identity of the user.  Authorization is deciding whether a user is allowed to perform an action. Authentication & Authorization

27  OWIN defines a standard interface between.NET web servers and web applications. The goal of the OWIN interface is to decouple server and application  Understanding OWIN Authentication/Authorization Understanding OWIN Authentication/Authorization ASP.NET Owin API

? ? ? ? ? ? ? ? ? MVC Advanced & Reflection

License  This course (slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International" licenseCreative Commons Attribution- NonCommercial-ShareAlike 4.0 International 29

Free Software University  Software University Foundation – softuni.orgsoftuni.org  Software University – High-Quality Education, Profession and Job for Software Developers  softuni.bg softuni.bg  Software Facebook  facebook.com/SoftwareUniversity facebook.com/SoftwareUniversity  Software YouTube  youtube.com/SoftwareUniversity youtube.com/SoftwareUniversity  Software University Forums – forum.softuni.bgforum.softuni.bg